Skip to content

GetCompleteStormElement

koliva8245 edited this page Jun 22, 2026 · 4 revisions

Example of getting the complete xml element with an id of AmazonBlindingLight.

<!-- \core.stormmod\base.stormdata\gamedata\abildata.xml -->
<CAbil default="1">
  <Name value="Abil/Name/##id##" />
  <TechPlayer value="Upkeep" />
  <TargetMessage value="Abil/TargetMessage/DefaultTargetMessage" />
  <OrderArray>
    <Color value="255,0,255,0" />
    <Model value="Assets\UI\Feedback\WayPointConfirm\WayPointConfirm.m3" />
    <LineTexture value="Assets\Textures\WayPointLine.dds" />
  </OrderArray>
  <SharedFlags index="DisableWhileDead" value="1" />
  <SharedFlags index="AllowQuickCastCustomization" value="1" />
  <SharedFlags index="TargetCursorVisibleInBlackMask" value="1" />
</CAbil>

<!-- \core.stormmod\base.stormdata\gamedata\abildata.xml -->
<CAbilEffectTarget default="1">
  <CmdButtonArray index="Execute">
    <Flags index="ShowInGlossary" value="1" />
  </CmdButtonArray>
  <Flags index="CanToggleAutoCast" value="1" />
  <Flags index="BestUnit" value="1" />
  <FollowRange value="5" />
</CAbilEffectTarget>

<!-- \heroesdata.stormmod\base.stormdata\gamedata\abildata.xml -->
<CAbilEffectTarget default="1">
  <CmdButtonArray index="Execute" AutoQueueId="Spell">
    <Flags index="AllowMinimap" value="0" />
    <Flags index="AllowSelfCast" value="1" />
  </CmdButtonArray>
  <Flags index="AllowMovement" value="1" />
  <Flags index="WaitToSpend" value="0" />
  <Flags index="UninterruptibleTurn" value="1" />
  <Flags index="ValidateButtonState" value="1" />
  <SharedFlags index="DisableWhileDead" value="0" />
  <OrderArray index="0" Model="Assets\Units\Test\InvisibleUnit\InvisibleUnit.m3" LineTexture="Assets\Textures\Storm_WayPointLine.dds" />
</CAbilEffectTarget>

<!-- \heromods\amazon.stormmod\base.stormdata\gamedata\amazondata.xml -->
<CAbilEffectTarget id="AmazonBlindingLight">
  <CmdButtonArray index="Execute" DefaultButtonFace="AmazonBlindingLight" />
  <PrepEffect value="DismountDecloakCasterSet" />
  <Effect value="AmazonBlindingLightInitialSet" />
  <Flags index="ClearLastMoveTarget" value="1" />
  <Flags index="RangeUseCasterRadius" value="0" />
  <Flags index="RequireTargetVision" value="0" />
  <UninterruptibleArray index="Cast" value="1" />
  <UninterruptibleArray index="Channel" value="1" />
  <UninterruptibleArray index="Finish" value="1" />
  <CastIntroTime value="0.125" />
  <Cost>
    <Vital index="Energy" value="50" />
    <Cooldown TimeUse="15" />
  </Cost>
  <Range value="8" />
  <RangeSlop value="5" />
  <CursorEffect value="AmazonBlindingLightTargetSearch" />
  <Arc value="360" />
</CAbilEffectTarget>
HeroesData heroesData = heroesXmlLoader.HeroesData;
StormElement? stormElement = heroesData.GetCompleteStormElement("abil", "AmazonBlindingLight");
StormElementData dataValues = stormElement.DataValues;

// Abil/Name/AmazonBlindingLight
string nameValue = dataValues.GetElementDataAt("name").Value.GetString();

// 5
int followRange = dataValues.GetElementDataAt("FollowRange").Value.GetInt();

IReadOnlyCollection<string> flags = dataValues.GetElementDataAt("flags").GetElementDataIndexes();
// {
//   CanToggleAutoCast,
//   BestUnit,
//   AllowMovement,
//   WaitToSpend,
//   UninterruptibleTurn,
//   ValidateButtonState,
//   ClearLastMoveTarget,
//   RangeUseCasterRadius,
//   RequireTargetVision,
// }

Clone this wiki locally