Utilizing Leadername & Leaderskin

Started by Emily Frost, July 29, 2011, 09:49PM

Previous topic - Next topic
The default trash mobs of the game (the non-unique minions that randomly spawn in clusters) are capable of being much more diverse- the game just doesn't actually use most of these options by default, except in special circumstances.

For example;
Running the Helicarrier mission (heli1 through heli4 where you defeat Fing Fang Foom) normally results in you encountering 3 types of mobs;
Ultron Warriors, Ultron Sentrys, and Doombots

Only, by renaming and redefining skin pointers in the npcstat, when I run Hellicarrier now it gives me the illusion of comming accross ~10 different types of foes instead of three:
Eight evolutions of the Ultron android (renamed Ultron-9 Alpha, Ultron-9 Beta, Ultron-10 Beta, Ultron-11 Alpha, Ultron-13 Alpha, Ultron-13 Beta, Ultron-14 Prototype, Ultron-15 Prototype) and  Two seperate types of Doombots (The default type has no cape, the second type has a cape). This is all just by changing a few words and numbers in npcstat entries  UltronWarrior_a, UltronWarrior_b and  DoomBot_a.

All of this is done by understanding the npcstat fields leadername and leaderskin which allow for far more diversity than is utilized by default.

Below is the default npcstat entry for UltronWarrior_b which I will use as an example:

   stats {
   body = 1 ;
   characteranims = 92_ultron_warrior ;
   charactername = Ultron Warrior ;
   combolevel = basic ;
   deathnode = deathgen ;
   leadername = Ultron Warrior ;
   leaderskin = 9201 ;
   level = 1 ;
   mind = 1 ;
   name = UltronWarrior_a ;
   powerstyle = ps_ultronwarrior ;
   skin = 9201 ;
   sounddir = ultrm_m ;
   standard_pain_only = true ;
   strength = 1 ;
   team = enemy ;
      talent {
      level = 1 ;
      name = monst_dmg_high ;
      }

      talent {
      level = 1 ;
      name = monst_dmg_low ;
      }

      talent {
      level = 1 ;
      name = monst_health ;
      }

      talent {
      level = 1 ;
      name = fightstyle_villain ;
      }

      talent {
      level = 1 ;
      name = grab ;
      }

   }

Here are the npcstat changes to this enemy I am currently using:

   charactername = Ultron-14 Prototype ;
   leadername = Ultron-15 Prototype ;
   leaderskin = 9202 ;
   skin = 9201 ;


What this very simple change does is give the in-game appearance of two seperate enemies, complete with a new look & name for the second, without having to take up a new slot in your npcstat.
In this way most non-unique foes are capable of being split into at least two semi-seperate foes for appearances sake and replay value.

By default, encountering a leaderversion of a foe is usually the normal version of that foe but with a resistance of some sort and/or an event trigger upon defeat (There are a few exceptions such as a Shi'ar Gunner leader being refered to as a Shi'ar Gunnery Sergeant). Overall the leadername / leaderskin entry is largely underused even though most enemies have 4 skin variants included in the actors folder- such as the Ultron Warriors.

Some entries even contain the mutatechance/mutateskin field which allows for even further customization, allowing an entry with both leadername/leaderskin and mutatechance/mutateskin the potential to appear in-game as three seperate types of enemies (which I am currently testing).

Below are npcstat entries for the ultron strikers & ultron warriors in Act One to give you an example of this in action. Please back-up your npcstat.engb (or xmlb/itab) files as always if you use this.
Only UltronWarrior_a & _b and UltronStriker_a & _b are seen in Act One. Later in the game npcstat entries UltronWarrior_c & UltronStriker_c appear later (as Ultron-16 Prototype, Ultron-17 Prototype, Ultron-18, and Ultron-19, etc). For this example the Doombots are unchanged.

   stats {
   aiforceranged = true ;
   body = 1 ;
   characteranims = 91_ultron_striker ;
   charactername = Ultron-9 Alpha ;
   combolevel = basic ;
   deathnode = deathgen ;
   leadername = Ultron-9 Beta ;
   leaderskin = 9104 ;
   level = 2 ;
   material = solid_metal ;
   mind = 1 ;
   name = UltronStriker_a ;
   npcdamagescale = 0.75 ;
   powerstyle = ps_ultronstriker ;
   skin = 9103 ;
   sounddir = ultrr_m ;
   standard_pain_only = true ;
   strength = 1 ;
   team = enemy ;
      Race {
      name = robot ;
      }

      talent {
      level = 1 ;
      name = monst_dmg_high ;
      }

      talent {
      level = 1 ;
      name = monst_dmg_low ;
      }

      talent {
      level = 1 ;
      name = monst_health ;
      }

      talent {
      level = 1 ;
      name = fightstyle_villain ;
      }

      talent {
      level = 1 ;
      name = grab ;
      }

      talent {
      level = 1 ;
      name = energy_resistant ;
      }

      StatEffect {
      bolt = Bip01 L Toe0 ;
      effect = char/ultrr/special_jets ;
      fxlevel = 1 ;
      }

      StatEffect {
      bolt = Bip01 R Toe0 ;
      effect = char/ultrr/special_jets ;
      fxlevel = 2 ;
      }

      StatEffect {
      effect = char/ultrr/special_jets ;
      fxlevel = 3 ;
      }

   }

   stats {
   aiforceranged = true ;
   body = 1 ;
   characteranims = 91_ultron_striker ;
   charactername = Ultron-10 Beta ;
   combolevel = basic ;
   deathnode = deathgen ;
   leadername = Ultron-11 Alpha ;
   leaderskin = 9101 ;
   level = 3 ;
   material = solid_metal ;
   mind = 1 ;
   name = UltronStriker_b ;
   npcdamagescale = 0.75 ;
   powerstyle = ps_ultronstriker ;
   skin = 9102 ;
   sounddir = ultrr_m ;
   standard_pain_only = true ;
   strength = 1 ;
   team = enemy ;
      talent {
      level = 1 ;
      name = monst_dmg_high ;
      }

      talent {
      level = 1 ;
      name = monst_dmg_low ;
      }

      talent {
      level = 1 ;
      name = monst_health ;
      }

      Race {
      name = robot ;
      }

      talent {
      level = 1 ;
      name = fightstyle_villain ;
      }

      talent {
      level = 1 ;
      name = grab ;
      }

      talent {
      level = 1 ;
      name = energy_resistant ;
      }

      StatEffect {
      bolt = Bip01 L Toe0 ;
      effect = char/ultrr/special_jets ;
      fxlevel = 1 ;
      }

   }

   stats {
   aiforceranged = true ;
   body = 1 ;
   characteranims = 91_ultron_striker ;
   charactername = Ultron-18 ;
   combolevel = basic ;
   deathnode = deathgen ;
   leadername = Ultron-19 ;
   leaderskin = 9104 ;
   level = 28 ;
   material = solid_metal ;
   mind = 1 ;
   name = UltronStriker_c ;
   npcdamagescale = 0.75 ;
   powerstyle = ps_ultronstriker ;
   skin = 9104 ;
   sounddir = ultrr_m ;
   standard_pain_only = true ;
   strength = 1 ;
   team = enemy ;
      talent {
      level = 1 ;
      name = monst_dmg_high ;
      }

      talent {
      level = 1 ;
      name = monst_dmg_low ;
      }

      talent {
      level = 1 ;
      name = monst_health ;
      }

      Race {
      name = robot ;
      }

      talent {
      level = 1 ;
      name = fightstyle_villain ;
      }

      talent {
      level = 1 ;
      name = grab ;
      }

      talent {
      level = 1 ;
      name = energy_resistant ;
      }

      talent {
      level = 1 ;
      name = knock_resist ;
      }

      StatEffect {
      bolt = Bip01 L Toe0 ;
      effect = char/ultrr/special_jets ;
      fxlevel = 1 ;
      }

   }

   stats {
   body = 1 ;
   characteranims = 92_ultron_warrior ;
   charactername = Ultron-13 Beta ;
   combolevel = basic ;
   deathnode = deathgen ;
   leadername = Ultron-13 ;
   leaderskin = 9202 ;
   level = 1 ;
   mind = 1 ;
   name = UltronWarrior_a ;
   powerstyle = ps_ultronwarrior ;
   skin = 9201 ;
   sounddir = ultrm_m ;
   standard_pain_only = true ;
   strength = 1 ;
   team = enemy ;
      talent {
      level = 1 ;
      name = monst_dmg_high ;
      }

      talent {
      level = 1 ;
      name = monst_dmg_low ;
      }

      talent {
      level = 1 ;
      name = monst_health ;
      }

      talent {
      level = 1 ;
      name = fightstyle_villain ;
      }

      talent {
      level = 1 ;
      name = grab ;
      }

      talent {
      level = 1 ;
      name = knock_resist ;
      }

   }

   stats {
   body = 1 ;
   characteranims = 92_ultron_warrior ;
   charactername = Ultron-14 Prototype ;
   combolevel = basic ;
   deathnode = deathgen ;
   leadername = Ultron-15 Prototype ;
   leaderskin = 9202 ;
   level = 3 ;
   mind = 1 ;
   name = UltronWarrior_b ;
   powerstyle = ps_ultronwarrior ;
   skin = 9201 ;
   sounddir = ultrm_m ;
   standard_pain_only = true ;
   strength = 1 ;
   team = enemy ;
      talent {
      level = 1 ;
      name = monst_dmg_high ;
      }

      talent {
      level = 1 ;
      name = monst_dmg_low ;
      }

      talent {
      level = 1 ;
      name = monst_health ;
      }

      talent {
      level = 1 ;
      name = fightstyle_villain ;
      }

      talent {
      level = 1 ;
      name = grab ;
      }

      talent {
      level = 1 ;
      name = knock_resist ;
      }

      talent {
      level = 1 ;
      name = no_trip ;
      }

   }

   stats {
   body = 1 ;
   characteranims = 92_ultron_warrior ;
   charactername = Ultron-16 Prototype ;
   combolevel = basic ;
   deathnode = deathgen ;
   leadername = Ultron-17 Prototype ;
   leaderskin = 9203 ;
   level = 28 ;
   mind = 1 ;
   name = UltronWarrior_c ;
   powerstyle = ps_ultronwarrior ;
   skin = 9204 ;
   sounddir = ultrm_m ;
   standard_pain_only = true ;
   strength = 1 ;
   team = enemy ;
      talent {
      level = 5 ;
      name = block ;
      }

      talent {
      level = 1 ;
      name = monst_dmg_high ;
      }

      talent {
      level = 1 ;
      name = monst_dmg_low ;
      }

      talent {
      level = 1 ;
      name = monst_health ;
      }

      talent {
      level = 1 ;
      name = fightstyle_villain ;
      }

      talent {
      level = 1 ;
      name = grab ;
      }

      talent {
      level = 1 ;
      name = knock_resist ;
      }

      talent {
      level = 1 ;
      name = no_trip ;
      }

   }


*In the above code UltronStriker_c has not been given seperate skin assignments yet (as I was going to make it use two of the XML2 prelate skins until a female Ultron skin is released but mostly because they do not appear in Act One where I was testing) and I am likewise not using my actual choices for the UltronWarrior_a as this is just a plug and play code for reference (In my game I have the UltronWarrior_a's using the Rabbit-looking Ultron skin that is the default for MUAs Ultron boss, since I have the actual boss using the beautiful classic skin that was made for him by Brohara).

Hope this is helpful.
"I'd give my Ex-Gene for my Ex, Jean... but I'll date Emma- since it's the next best thing."

This is very nice, new bosses has taken a back seat to me creating a arena, but maybe I won't need to do anything at all, when it's time you will already have done this even deeper. The only thing left, if i'm not mistaken, is the character animations then, and powerstyles. How do the fightstyles look? I was having some difficulty getting specific fightstyles to work with the different skins, some just looked plain stupid, some looked fine, others didn't show up at all. Just wondering what you've encountered. I Look forward to seeing where this leads. We gonna make a whole new......oh, nvm. lol

This is a nice contribution and very well written.  I may try this out soon.  Thanks, Emily Frost.
Use this poll to tell everyone where you are from:

http://marvelmods.com/forum/index.php/topic,3929.msg73927.html#msg73927