Author Topic: Understanding the Herostat  (Read 44 times)

Offline Lags

  • Uncanny Member
  • *
  • Posts: 27
  • Upvotes 3
  • Loves the Generic faceless Soldiers
Understanding the Herostat
« on: July 16, 2019, 02:44pm »
It may have been discussed before but I thought it be a great idea to make a topic about it here. We may already know how the herostat works, but I'm still gonna try my best to simplify it a little bit for those new to X-Men Legends 1 modding.

Now that we finally know the location of our friendly herostat that operates the X-Men Roster for this game, which is found in the permanent.fb under assetsfb>maps>package, we can now dive further into the creation of custom characters, as well as adding in additional skins.

The file is written in xml format so when editing it, you have to be extra careful when making changes to a hero's stats. Spacing is also important so if you double space somewhere, you might cause something not to be read properly. The herostat can be easily opened in a text editing program (such as notepad, or notepad++, etc). When opening up the file, it'll appear something like this:





We'll use an example of a character's stats on how it's laid out. So our example here is Wolverine. I color-coded specific areas to make it a bit easier to understand how it works. Below his data you'll find the list and description that each color corresponds to.

Quote from: Wolverine Stats
<stats name="Wolverine" charactername="Wolverine" skin="0301" skin_60s="03" skin_70s="03" skin_future="05" skin_weaponx="02" sounddir="wolver_m" powerstyle="ps_wolverine" characteranims="03_wolverine" canbeallythrown="true" level="1" strength="4" speed="5" body="5" mind="3" team="hero" scriptlevel="3" RatingMelee="1" RatingRanged="0" RatingSupport="0" RatingDurability="0.8" canSeeStealthed="true" ailevel="2" playable="true">
<Race name="Mutant"/>
<BoltOn slot="ebolton_clawleft" bolt="Bip01 L Hand" model="models/bolton/claw_left"/>
<BoltOn slot="ebolton_clawright" bolt="Bip01 R Hand" model="models/bolton/claw_right"/>

<Talent name="wolv_slash" level="1" descname="Brutal Slash" description="Brutal claw slash and stab" icon_texture="textures/ui/wolverine_all.png" icon="0" power="0">
<level description="^L4 Physical Damage. ^3 Destruction. ^K4 Knockback. ^P1 Energy."/>
<level description="^L5 Physical Damage. ^3 Destruction. ^K4 Knockback. ^P1+ Energy.">
<require cat="level" level="3"/>
</level>
<level description="^M1 Physical Damage. ^3 Destruction. ^K4 Knockback. ^P2 Energy.">
<require cat="level" level="5"/>
</level>
<level description="^M2 Physical Damage. ^3 Destruction. ^K4 Knockback. ^P2+ Energy.">
<require cat="level" level="7"/>
</level>
<level description="^M3 Physical Damage. ^3 Destruction. ^K4 Knockback. ^P3 Energy.">
<require cat="level" level="9"/>
</level>
<level description="^M4 Physical Damage. ^3 Destruction. ^K4 Knockback. ^P4 Energy.  Adds Bleed Damage." descname="Eviscerate" cost="2">
<require cat="level" level="15"/>
</level>
<level description="^M5 Physical Damage. ^3 Destruction. ^K4 Knockback. ^P4+ Energy.  Adds Bleed Damage.">
<require cat="level" level="17"/>
</level>
<level description="^H1 Physical Damage. ^3 Destruction. ^K4 Knockback. ^P5 Energy. Adds Bleed Damage.">
<require cat="level" level="19"/>
</level>
<level description="^H2 Physical Damage. ^3 Destruction. ^K4 Knockback. ^P5+ Energy. Adds Bleed Damage.">
<require cat="level" level="21"/>
</level>
<level description="^H3 Physical Damage. ^3 Destruction. ^K4 Knockback. ^P6 Energy. Adds Bleed Damage.">
<require cat="level" level="23"/>
</level>
<level description="^H5 Physical Damage. ^3 Destruction. ^K4 Knockback. ^P7 Energy. Adds Bleed Damage." descname="Legend Slash" cost="2">
<require cat="level" level="25" degree="see"/>
<require cat="level" level="30"/>
</level>
</Talent>
<Talent name="wolv_frenzy" level="0" descname="Claw Flurry" description="Multiple slashing attacks" icon_texture="textures/ui/wolverine_all.png" icon="1" power="1">
<level description="^L2 Physical Damage. ^P2+ Energy." cost="2">
<require cat="level" level="5"/>
</level>
<level description="^L3 Physical Damage. ^P3 Energy. Up to ^2 attacks in sequence.">
<require cat="level" level="7"/>
</level>
<level description="^L4 Physical Damage. ^P3+ Energy. Up to ^2 attacks in sequence.">
<require cat="level" level="9"/>
</level>
<level description="^L5 Physical Damage. ^P4 Energy. Up to ^3 attacks in sequence.">
<require cat="level" level="11"/>
</level>
<level description="^M1 Physical Damage. ^P4+ Energy. Up to ^3 attacks in sequence.">
<require cat="level" level="13"/>
</level>
<level description="^M2 Physical Damage. ^P5+ Energy. Up to ^3 attacks in sequence." descname="Claw Frenzy" cost="2">
<require cat="level" level="20"/>
</level>
<level description="^M3 Physical Damage. ^P6 Energy. Up to ^4 attacks in sequence.">
<require cat="level" level="22"/>
</level>
<level description="^M4 Physical Damage. ^P6+ Energy. Up to ^4 attacks in sequence.">
<require cat="level" level="24"/>
</level>
<level description="^M5 Physical Damage. ^P7 Energy. Up to ^5 attacks in sequence.">
<require cat="level" level="26"/>
</level>
<level description="^H1 Physical Damage. ^P7+ Energy. Up to ^5 attacks in sequence.">
<require cat="level" level="28"/>
</level>
<level description="^H2 Physical Damage. ^P8+ Energy. Up to ^5 attacks in sequence." descname="Legend Frenzy" cost="2">
<require cat="level" level="25" degree="see"/>
<require cat="level" level="30"/>
</level>
</Talent>
<Talent name="wolv_berserk" level="0" descname="Feral Rage" description="Enters a raged state" icon_texture="textures/ui/wolverine_all.png" icon="2" power="2">
<level description="^BST1 Seconds. +^5 Agility. +30% movement speed. ^P6 Energy." cost="2">
<require cat="level" level="5"/>
</level>
<level description="^BST2 Seconds. +^5 Agility. +30% movement speed. ^P7 Energy.">
<require cat="level" level="7"/>
</level>
<level description="^BST3 Seconds. +^5 Agility. +30% movement speed. ^P8 Energy.">
<require cat="level" level="9"/>
</level>
<level description="^BST4 Seconds. +^5 Agility. +30% movement speed. +^5 Striking. ^P10 Energy." descname="Berserker Rage" cost="2">
<require cat="level" level="14"/>
</level>
<level description="^BST5 Seconds. +^5 Agility. +30% movement speed. +^5 Striking. ^P11 Energy.">
<require cat="level" level="16"/>
</level>
<level description="^BST6 Seconds. +^5 Agility. +30% movement speed. +^5 Striking. ^P12 Energy.">
<require cat="level" level="18"/>
</level>
<level description="^BST7 Seconds. +^5 Agility. +30% movement speed. +^5 Striking. +^5 Body. ^P14 Energy." descname="Unstoppable Rage" cost="2">
<require cat="level" level="23"/>
</level>
<level description="^BST8 Seconds. +^5 Agility. +30% movement speed. +^5 Striking. +^5 Body. ^P15 Energy.">
<require cat="level" level="25"/>
</level>
<level description="^BST9 Seconds. +^5 Agility. +30% movement speed. +^5 Striking. +^5 Body. ^P16 Energy.">
<require cat="level" level="27"/>
</level>
</Talent>
<Talent name="wolv_xtreme" level="0" descname="SAVAGE RAMPAGE" description="Dashes from enemy to enemy brutally slashing them" icon_texture="textures/ui/wolverine_all.png" icon="3" power="3">
<level description="Unlocks this ability" cost="2">
<require cat="level" level="15"/>
</level>
</Talent>
<Talent name="wolv_sharpness" level="0" descname="Sharpness" description="Adds Damage and Destruction to all claw attacks." power="5">
<level description="+^L1 Physical Damage. +^3 Destruction.">
<require cat="level" level="3"/>
<activepowerup powerup="damageLevel" level="3" life="-1" scope_attack="punch"/>
<activepowerup powerup="damage" level="L1" life="-1" scope_attack="punch"/>
</level>
<level description="+^L2 Physical Damage. +^5 Destruction.">
<require cat="level" level="8"/>
<activepowerup powerup="damageLevel" level="5" life="-1" scope_attack="punch"/>
<activepowerup powerup="damage" level="L2" life="-1" scope_attack="punch"/>
</level>
<level description="+^L3 Physical Damage. +^6 Destruction. +^L1 Bleed for ^5 seconds.">
<require cat="level" level="13"/>
<activepowerup powerup="damageLevel" level="6" life="-1" scope_attack="punch"/>
<activepowerup powerup="damage" level="L3" life="-1" scope_attack="punch"/>
<activepowerup powerup="none" level="L1" user1="5" life="-1" scope_attack="punch" func_damage="damageaddbleed"/>
</level>
<level description="+^L4 Physical Damage. +^7 Destruction. +^L2 Bleed for ^7 seconds.">
<require cat="level" level="18"/>
<activepowerup powerup="damageLevel" level="7" life="-1" scope_attack="punch"/>
<activepowerup powerup="damage" level="L4" life="-1" scope_attack="punch"/>
<activepowerup powerup="none" level="L2" user1="7" life="-1" scope_attack="punch" func_damage="damageaddbleed"/>
</level>
<level description="+^L5 Physical Damage. +^8 Destruction. +^L3 Bleed for ^9 seconds.">
<require cat="level" level="20"/>
<activepowerup powerup="damageLevel" level="8" life="-1" scope_attack="punch"/>
<activepowerup powerup="damage" level="L5" life="-1" scope_attack="punch"/>
<activepowerup powerup="none" level="L3" user1="9" life="-1" scope_attack="punch" func_damage="damageaddbleed"/>
</level>
</Talent>
<Talent name="expertise" descname="Expertise" description="Adds Striking and Agility." level="0">
<level description="+^1 Striking. +^1 Agility.">
<activepowerup powerup="speed" level="1" life="-1"/>
<activepowerup powerup="strength" level="1" life="-1"/>
</level>
<level description="+^2 Striking. +^2 Agility.">
<activepowerup powerup="speed" level="2" life="-1"/>
<activepowerup powerup="strength" level="2" life="-1"/>
</level>
<level description="+^3 Striking. +^3 Agility.">
<activepowerup powerup="speed" level="3" life="-1"/>
<activepowerup powerup="strength" level="3" life="-1"/>
</level>
<level description="+^4 Striking. +^4 Agility.">
<activepowerup powerup="speed" level="4" life="-1"/>
<activepowerup powerup="strength" level="4" life="-1"/>
</level>
<level description="+^5 Striking. +^5 Agility.">
<activepowerup powerup="speed" level="5" life="-1"/>
<activepowerup powerup="strength" level="5" life="-1"/>
</level>
</Talent>
<Talent name="healing_factor" level="0"/>
<Talent name="fightstyle_hero" level="1"/>
<Talent name="critical" level="0"/>
<Talent name="toughness" level="0"/>
<Talent name="mutantmastery" level="0"/>

</stats>

Red - Marks the coding for the beginning and end of the body that stores in the entire hero's data.
<stats name= "data">
</stats>

Blue - The character's stats. The very end of the section for each character's stats all end with the playable="true".

Below this is on wards to a hero's talents and additional things that can be applied to a hero.

Green - Data for their race. (Just keep it as mutant. It freezes if you try changing it to human or anything else).
<Race name="_"/>

Purple - General space you can use to equip boltons on your heroes as long as the files of the bolton are also included in a hero's FB file. Ex: Wolverine has model data for his claws in his FB so the game will be be able to read where the files for them are located.
<BoltOn slot="ebolton_clawleft" bolt="Bip01 L Hand" model="models/bolton/claw_left"/>
<BoltOn slot="ebolton_clawright" bolt="Bip01 R Hand" model="models/bolton/claw_right"/>

Teal -  Body and end coding used for listing Talent files. These are for their mutant powers to appear in the Team management. Unlike XML2, heroes in XML1 don't have talent.engs in their FB files as they're all stored in the Herostat.
<Talent name= "data" >
</talent>

Brown - Space stored for a Talent's name and description. Ex: Woverine's Brutal Claw and what he does.

Black - The coding space where you can modify the talent's levels, effects, and adjust the powerusage, damage modifier, etc. Can't explain much here since I'm not good when it comes to making custom movesets.

Orange - Shared Talents that are pretty much passive buffs that can be applied for all heroes which are used at the end of the body data for a hero.
<Talent name="_" level="_"/>


Hero Skins:
Looking at the herostat, I was able to count how many skins there are. As far as I've seen, heroes can have up to 6 skins. Below is the list of skins (by order) when previewing them in game:

skin = (default skin01) ;
skin_60s = skin02 ;
skin_70s = skin03 ;
skin_weaponx = skin04 ;
skin_future = skin05 ;
skin_civilian = skin06 ;

But since we'll be putting them in XML format, the skin list should be something like this:

Quote from: Stats
<stats name="default" charactername="defaultman" skin="XX01" skin_60s="02" skin_70s="03" skin_weaponx="04" skin_future="05" skin_civilian="06" level="1" strength="1" speed="1" body="1" mind="1" RatingMelee="0.25" RatingRanged="0.25" RatingSupport="0.25" RatingDurability="0.25" characteranims="00_testguy">

And with that done, I hope i was able to explain things a bit about the herostat. It should give people a good start how things are laid out.
« Last Edit: July 16, 2019, 02:53pm by Lags »

Offline BaconWizard17

  • Marvel Modder
  • Incredible Member
  • **********
  • Posts: 1426
  • Upvotes 82
  • Sometimes you just gotta go for it, ya know?
Re: Understanding the Herostat
« Reply #1 on: July 16, 2019, 03:06pm »
This is very informative! Thank you!