How To: Bypass costume passives for 5th & 6th costumes.

Started by BLaw, April 14, 2010, 12:50PM

Previous topic - Next topic
I'm not a fanatic gamer nor tester, so I'm not yet confident if this works or not. But I think it does, because I used logic. Pure logic.

What do you need?
Quote
- Packages for the 5th skin;
- Packages for the 6th skin;
- A 5th skin;
- A 6th skin;
- The above correctly numbered;
- The 5th and 6th skins defined in the herostat entry of the character in question;

Step 1: defining where passives can be upgraded.
And this is pure logic. An experienced modder knows what I'm talking aboot :P

1.1 Decompile the talentfile of your character.
Now, there's a hard part to this. It's called choice. What you're going to do is...

To be continued


Kidding. You're going to choose a power. A power? YES! But why Myyster Law? Because when you are going to upgrade that power, you'll also upgrade the costume passive for one of the skins! OMG YOU'RE A GENIOUS MYYSTER LAW! Hehe, well, ehm thank you hehe.. Yeah I eh.. Yeah..

Anyway, Let's say the FIRST POWER in the talent file has these values:

- p1_pwr
- p1_dmg

This is NEAT! Why? Because there are only a few values useable but those values have also been coded somewhere else in another file, probably values! (no Stevie Wonder!)

Now, we are going to pick one. Which we are certain of, one that a costume MUST HAVE!!!!! Yes, yes, that's right. Let's look in my bag: backpack, backpack(8), Stupid Dora in the morning :P Wish they put Comedy Central on all day instead of Nickelodeon here XD.

Anyway, the value for Defense is DR. O, rly? :O Yes!

But, if we look at the normal costume passives, we see the following stuff:

Quote
   talent {
   descname = Defense ;
   description = Increases $DR. ;
   icon = 22 ;
   icon_texture = textures/ui/talent_icons.png ;
   name = goblin_outfit13 ;
   skin = 0 ;
   type = passive ;
      talentvalues {
         talentvalue {
         level = 1 ;
         name = goblin_outfit13_dr ;
         value = 1 ;
         }

         talentvalue {
         level = 9 ;
         name = goblin_outfit13_dr ;
         value = 9 ;
         }

      }

      level {
      count = 9 ;
      description = +%goblin_outfit13_dr $DR ;
         powerup {
         life = -1 ;
            affecter {
            attribute = defense_rating ;
            level = %goblin_outfit13_dr ;
            }

         }

      }

   }

Talent values go from 1 to 9. If we are going to add the defense rating for the 5th and 6th costumes, we can add the following line to the first power (choose any spot that's good, for example below the p1_pwr values:

Quote
         talentvalue {
         level = 1 ;
         name = character_p1_dr;
         value = 1 ;
         }

         talentvalue {
         level = 1 ;
         name = character_p1_dr;
         value = 9 ;
         }

         talentvalue {
         level = 1 ;
         name = character_p1_dr2;
         value = 1 ;
         }

         talentvalue {
         level = 1 ;
         name = character_p1_dr2;
         value = 9 ;
         }

DR will be used by the 5th skin, DR2 will be used by the 6th skin.

To be continued. Auto LOCKED topic, please do not respond.

The saga continues..... After this short commercial break:

http://www.youtube.com/watch?v=97ejk5NOrR8

And we continue!.

Oh, one thing I forgot: save and compile the talentfile when you're done ^^

2. How can I make it useable?

2.1 The Y of powerstYles!

Yes. That's where. But not in a power... No... It needs to be somewhere where you are unable to deactivate it. In a position you start in every map. What could it be? Can you guess? I can: IDLE.

Decompile the character's powerstyle.

Every character starts in the IDLE position when a map loads. It never changes. But, vat yzz ze caud? (yeah, speak that out will ya)

Quote
   FightMove {
   animenum = ea_idle1 ;
   handler = ch_idle ;
   lockchaining = false ;
   name = idle ;
   noncombat = true ;
      trigger {
      name = powerup ;
      skin_filter = 00005 ;
      time = 0 ;
         affecter {
         affect_type = scale ;
         attribute = def_damage ;
         level = %character_p1_dr ;
         }

      }

      trigger {
      name = powerup ;
      skin_filter = 00006 ;
      time = 0 ;
         affecter {
         affect_type = scale ;
         attribute = def_damage ;
         level = %character_p1_dr2 ;
         }

      }

      chain {
      action = walk ;
      result = walk ;
      }

      chain {
      action = jog ;
      result = jog ;
      }

      chain {
      action = run ;
      result = run ;
      }

      chain {
      action = sprint ;
      result = sprint ;
      }

      chain {
      action = strafeleft ;
      result = strafeleft ;
      }

      chain {
      action = straferight ;
      result = straferight ;
      }

      chain {
      action = advance ;
      result = advance ;
      }

      chain {
      action = retreat ;
      result = retreat ;
      }

      chain {
      action = guard ;
      result = guarddecide ;
      }

      chain {
      action = attack ;
      result = attacklight1 ;
      }

      chain {
      action = smash ;
      result = attackheavy1 ;
      }

      chain {
      action = groundattack ;
      result = groundattack ;
      }

      chain {
      action = move ;
      result = jump ;
      }

      chain {
      action = special ;
      result = boredloop ;
      }

      chain {
      action = powers ;
      result = powers ;
      }

   }

SEE WHAT I'VE DONE???????

- Applied skinfilter
- named it powerup, because powerup are certain to work
- applied an affecter to the "powerup"
- made sure it never stops unless you go on to a new area / map, where it automaticly restarts because you're in idle
- made sure the values are correct for each skin
- made sure you're able to walk, run, jump etc after activation. otherwise you would be stuck in the IDLE pose.

You can add various values to the character. But limit it to three, because values will run out. Especially when you put the values in a power which already has it. DMG for example is used to increase damage output, but also used for the amount of damage a character does with an attack or power.

When you're done, compile the powerstyle and talent file if you haven't done so yet. Then try to see if it works.

(NOTE: might not be visible in the char selection menu because the IDLE pose ain't active there)


awesome. it's a bit confusing, but i think that i'll get it eventually. then i can use it for the thing that i pm'd you about ^^.

ye i always wanted to ask, what's up with the 5th and 6th skin having no bonuses to spend coins on?

does this have something to do with it, or am I being retarded again (just choose 1 I can take it)

:D
Ask not what your country can do for you, but what illega.. wonderful things you can do in your country!

I would appreciate it if no questions are being asked in this topic.

A number of things:
1. I think it would be simpler if the passives are not linked to any other existing powers and maxed to their corresponding level 9 talents values.
2. The power-ups would stack. So, setting "no_stack = true ;" to your passives would fix it.
3. Since the passives are added to your character as you enter a new combat zone, your character would appear to have less than 100% health/energy if the chosen passives are Max Health/Max Energy/Boost Stats. I don't know how to fix this, yet. It might not be a problem for Max Energy because EP regenerates over time for any playable character. For Max Health/Boost Stats, it might be less noticeable to the players if the passive is partnered with health regeneration.
4. To make the power-ups passives, I think you need to give it infinite life by setting "life = -1;".

To show you how to do all of the above, please see below a snippet from my Ghost Rider upgrade:


   event {
   inherit = powerup ;
   life = -1 ;
   name = my_defense_passive ;
   no_stack = true ;
      affecter {
      attribute = defense_rating ;
      level = 9 ;
      }

   }

   event {
   inherit = powerup ;
   life = -1 ;
   name = my_regen_passive ;
   no_stack = true ;
      affecter {
      attribute = health_regen_pct ;
      level = 0.012 ;
      }

   }

   event {
   inherit = powerup ;
   life = -1 ;
   name = my_traits_passive ;
   no_stack = true ;
      affecter {
      attribute = traits ;
      level = 10 ;
      }

   }

   event {
   inherit = powerup ;
   life = -1 ;
   name = my_hpk_passive ;
   no_stack = true ;
      affecter {
      attribute = health_per_kill ;
      level = 30 ;
      }

   }

   event {
   inherit = powerup ;
   life = -1 ;
   name = my_speed_passive ;
   no_stack = true ;
   tag_name = my_passives_on ;
      affecter {
      affect_type = scale ;
      attribute = move_attack ;
      level = 1.2 ;
      }

   }

   FightMove {
   animenum = ea_idle1 ;
   handler = ch_idle ;
   lockchaining = false ;
   name = idle ;
   noncombat = true ;
      trigger {
      name = my_defense_passive ;
      skin_filter = 0605 ;
      time = 0 ;
      }

      trigger {
      name = my_traits_passive ;
      skin_filter = 0605 ;
      time = 0 ;
      }

      trigger {
      name = my_regen_passive ;
      skin_filter = 0605 ;
      time = 0 ;
      }

      trigger {
      name = my_speed_passive ;
      skin_filter = 0606 ;
      time = 0 ;
      }

      trigger {
      name = my_defense_passive ;
      skin_filter = 0606 ;
      time = 0 ;
      }

      trigger {
      name = my_hpk_passive ;
      skin_filter = 0606 ;
      time = 0 ;
      }

      chain {
      action = walk ;
      result = walk ;
      }

      chain {
      action = run ;
      result = run ;
      }

      chain {
      action = sprint ;
      result = sprint ;
      }

      chain {
      action = strafeleft ;
      result = strafeleft ;
      }

      chain {
      action = straferight ;
      result = straferight ;
      }

      chain {
      action = advance ;
      result = advance ;
      }

      chain {
      action = retreat ;
      result = retreat ;
      }

      chain {
      action = guard ;
      result = guarddecide ;
      }

      chain {
      action = attack ;
      result = attacklight1 ;
      }

      chain {
      action = smash ;
      result = attackheavy1 ;
      }

      chain {
      action = groundattack ;
      result = groundattack ;
      }

      chain {
      action = move ;
      result = jump ;
      }

      chain {
      action = special ;
      result = boredloop ;
      }

      chain {
      action = blocking ;
      result = blocking ;
      }

      chain {
      action = powers ;
      result = powers ;
      }

      chain {
      action = rollright ;
      result = dodgeright ;
      }

      chain {
      action = rollleft ;
      result = dodgeleft ;
      }

   }

Quote from: iammingy on May 13, 2012, 11:01PM
A number of things:
1. I think it would be simpler if the passives are not linked to any other existing powers and maxed to their corresponding level 9 talents values.
2. The power-ups would stack. So, setting "no_stack = true ;" to your passives would fix it.
3. Since the passives are added to your character as you enter a new combat zone, your character would appear to have less than 100% health/energy if the chosen passives are Max Health/Max Energy/Boost Stats. I don't know how to fix this, yet. It might not be a problem for Max Energy because EP regenerates over time for any playable character. For Max Health/Boost Stats, it might be less noticeable to the players if the passive is partnered with health regeneration.
4. To make the power-ups passives, I think you need to give it infinite life by setting "life = -1;".

To show you how to do all of the above, please see below a snippet from my Ghost Rider upgrade:


   event {
   inherit = powerup ;
   life = -1 ;
   name = my_defense_passive ;
   no_stack = true ;
      affecter {
      attribute = defense_rating ;
      level = 9 ;
      }

   }

   event {
   inherit = powerup ;
   life = -1 ;
   name = my_regen_passive ;
   no_stack = true ;
      affecter {
      attribute = health_regen_pct ;
      level = 0.012 ;
      }

   }

   event {
   inherit = powerup ;
   life = -1 ;
   name = my_traits_passive ;
   no_stack = true ;
      affecter {
      attribute = traits ;
      level = 10 ;
      }

   }

   event {
   inherit = powerup ;
   life = -1 ;
   name = my_hpk_passive ;
   no_stack = true ;
      affecter {
      attribute = health_per_kill ;
      level = 30 ;
      }

   }

   event {
   inherit = powerup ;
   life = -1 ;
   name = my_speed_passive ;
   no_stack = true ;
   tag_name = my_passives_on ;
      affecter {
      affect_type = scale ;
      attribute = move_attack ;
      level = 1.2 ;
      }

   }

   FightMove {
   animenum = ea_idle1 ;
   handler = ch_idle ;
   lockchaining = false ;
   name = idle ;
   noncombat = true ;
      trigger {
      name = my_defense_passive ;
      skin_filter = 0605 ;
      time = 0 ;
      }

      trigger {
      name = my_traits_passive ;
      skin_filter = 0605 ;
      time = 0 ;
      }

      trigger {
      name = my_regen_passive ;
      skin_filter = 0605 ;
      time = 0 ;
      }

      trigger {
      name = my_speed_passive ;
      skin_filter = 0606 ;
      time = 0 ;
      }

      trigger {
      name = my_defense_passive ;
      skin_filter = 0606 ;
      time = 0 ;
      }

      trigger {
      name = my_hpk_passive ;
      skin_filter = 0606 ;
      time = 0 ;
      }

      chain {
      action = walk ;
      result = walk ;
      }

      chain {
      action = run ;
      result = run ;
      }

      chain {
      action = sprint ;
      result = sprint ;
      }

      chain {
      action = strafeleft ;
      result = strafeleft ;
      }

      chain {
      action = straferight ;
      result = straferight ;
      }

      chain {
      action = advance ;
      result = advance ;
      }

      chain {
      action = retreat ;
      result = retreat ;
      }

      chain {
      action = guard ;
      result = guarddecide ;
      }

      chain {
      action = attack ;
      result = attacklight1 ;
      }

      chain {
      action = smash ;
      result = attackheavy1 ;
      }

      chain {
      action = groundattack ;
      result = groundattack ;
      }

      chain {
      action = move ;
      result = jump ;
      }

      chain {
      action = special ;
      result = boredloop ;
      }

      chain {
      action = blocking ;
      result = blocking ;
      }

      chain {
      action = powers ;
      result = powers ;
      }

      chain {
      action = rollright ;
      result = dodgeright ;
      }

      chain {
      action = rollleft ;
      result = dodgeleft ;
      }

   }


Late reply but, the intention is to spend points on those abilities. The code you used is good, but you left one thing out: where do you upgrade those talents?

Well basicly, you can create empty powers for characters who already have 9 powers. You can only have 9 powers keybinded to a keyboard anyway.

For example, let's say Spider-Man has 9 powers in total, including the X-treme, all named power1 to power9 (power9 being the X-Treme), you could start at power 10 and it won't show up on the hotkey board, creating it in the talent file with it's own talent values, and using the method Iammingy described to make the passives active with the idle code in the powerstyle.

So:
Power10/11 will be the name of passive one
Power12/13 for two
Power14/15 for defense passive

These as separate passives in the powerstyle

However, something came to mind: if you make the passives available at level 1, they might show up in the powerbar, rendering the rest of the abilities unable for use. I didn't try out this method yet, so if anyone wants to try, be our guest.