3D array is referenced by two separate game objects

Anytime I have a data structure that is 2D in shape (or higher) I wrap it up in an API and access it exclusively through that API, which lets me centralize the ugly details of its storage, eg., treat the x,y,z,w as true N-dimensional indices, or alternately as a key into a sparse dictionary, rather than splattering [z][y][x]-style dereferences all over my codebase.

That said, what you have above feels like it shouldn’t be a 3D array but rather a meaningful data structure tailored to what data you are representing. The choice of how to structure this is a fairly well-traveled road as far as gamedev goes, with things like ScriptableObjects used for pre-authored data, and other structures used for instance-as-you-play data.

Here are some potentially-relevant resources:

ScriptableObject usage in RPGs:

Usage as a shared common data container:

As for combat specifically, here’s some more discussions: