digraph mygraph { fontname="monospace" edge [fontname="Noto Serif"] node [ fontname="Noto Serif" style=filled shape=plain fillcolor="#60200080" pencolor="#00000080" // frames color ] subgraph rankedTop { "Global" [ label =<
| Global | 
| Propagator: GLOBAL_EFFECT | 
| C++ Class: CGameState | 
| Global node to which all map entities are connected  | 
| Note: Not recruited heroes (such as in tavern) are not attached to any node  | 
| Contains global bonuses, global stack experience and difficulty bonuses | 
| Team | 
| Propagator: TEAM | 
| C++ Class: TeamState | 
| Per-team node. Game will put players without team into a team with a single player  | 
| Player | 
| Propagator: PLAYER | 
| C++ Class: CPlayerState | 
| Per-player team. All objects owned by a player belong to such node  | 
| Hero | 
| Propagator: HERO | 
| C++ Class: CGHeroInstance | 
| Represents a hero, either owned by player or in prison. Bonuses from specialty and secondary skills are attached directly to this node  | 
| Contains per-hero global bonuses, specialty bonuses,  primary and secondary skill bonuses, campaign primary skill bonus  | 
| Visiting Hero | 
| Hero that is currently visiting owned or allied town  | 
| Hero defending town | 
| Hero that is currently fighting on a defending side in a siege  | 
| Wandering Hero | 
| Hero that is currently moving on map, outside of towns  | 
| Neutral Army | 
| Any army that is not owned by a player Wandering monsters, Banks, Events, etc  | 
| Owned Army | 
| Army owned by a player. Mines, Garrisons, Dwellings  | 
| Owned Object | 
| Other objects owned by a player, like Lighthouse | 
| Contains Flaggable Objects bonuses | 
| Town | 
| Propagator: TOWN | 
| C++ Class: CGTownInstance | 
| Represents a town on map. | 
| Contains town building bonuses | 
| Artifact Instance | 
| C++ Class: CArtifactInstance | 
| Represents a particular instance of an artifact that hero can equip or trade  | 
| Contains bonuses of spell scrolls and growing artifacts | 
| Boat | 
| C++ Class: CGBoat | 
| Represents a boat or other type of transport. | 
| Contains bonuses provided to boarded hero | 
| Town and Visiting Hero | 
| Propagator: TOWN_AND_VISITOR | 
| C++ Class: CTownAndVisitingHero | 
| Helper node that exists solely to propagate bonuses to both town and visiting hero  | 
| Note: Neutral towns are attached to global node instead | 
| Combat | 
| Propagator: BATTLE_WIDE | 
| C++ Class: BattleInfo | 
| Node that contains both sides of a combat Anything propagated to this node will affect both sides in combat  | 
| Contains battlefield and native terrain bonuses | 
| Creature Type | 
| C++ Class: CCreature | 
| Represents a creature type, such as Pikeman or Archer | 
| Contains creature abilities bonuses, stack experience bonuses | 
| Artifact Type | 
| C++ Class: CArtifact | 
| Represents an artifact type, for example Ring of Life | 
| Contains fixed bonuses of artifacts | 
| Artifact Component | 
| C++ Class: CArtifactInstance | 
| For combined, non-fused artifacts, instances of components are attached to instance of combined artifact  | 
| Army | 
| Propagator: ARMY | 
| C++ Class: CArmedInstance | 
| Represents any object that can hold army, such as town, hero, mines, garrisons, wandering monsters  | 
| Contain anti-magic garrison bonus, faction mixing morale bonus | 
| Unit in Army | 
| C++ Class: CStackInstance | 
| Represents a unit that is part of a army A unit always has a creature type, belongs to an army and has stack size  | 
| Commander | 
| C++ Class: CCommanderInstance | 
| Represents a hero commander, WoG feature | 
| Unit in Combat | 
| C++ Class: CStack | 
| Represents current state of a unit during combat, can be affected by spells or receive damage  | 
| Summon in Combat | 
| C++ Class: CStack | 
| Represents any unit that was added in combat, and may not remain after combat  |