User Tools

Site Tools


Sidebar

Torchmodders Site


Wiki Navigation

passive_skill_chaos_wand

Passive Skill: Wand Chaos

This post is part of a continuation of a series. Before getting too deep into it I recommend first reading the previous two posts:
Basic Skill
Passive Skill

Wand Chaos contains many elements we've seen before and several new ones.

About Wand Chaos

Wand Chaos is a Passive skill available to Embermages. It has a chance to proc a random effect when the caster attacks while a wand is equipped. Each rank in the skill increases the chance of a random effect happening. Here is how the game described it at rank 1:

Finding the Skill in the Files

This one is trickier than some of the skills we've looked at previously. Wand Chaos has several parts. You might be tempted to look in the folder labeled “Wand Chaos” first, but in this case we really need to start with the “Passives” folder. We find two renditions of Wand Chaos there.

Here's what each of these skills does: - Chaos Wand Passive: This skill is the Passive skill that sets up an Affix containing an Effect that has a chance to cause a proc to fire when the player attacks. This portion of the skill is the part that is visible on the skill tree screen and is where ranks of the power “go.” - Chaos Wand: This is the proc itself. It is a Hidden skill that is called when the Effect described above fires.

We'll start with Chaos Wand Passive first.

 <STRING>NAME:Chaos Wand Passive
 <TRANSLATE>DISPLAYNAME:Wand Chaos
 <TRANSLATE>BASE_DESCRIPTION:Attacks using your wand can result in bizarre, random elemental disturbances. These effects can also happen with the Magma Mace, Magma Spear, Icy Blast and Shockbolts skills.
 <TRANSLATE>REQUIREMENT_DESCRIPTION:Requires a Wand
 <STRING>SKILL_ICON:skillicon_wand_chaos
 <STRING>SKILL_ICON_INACTIVE:skillicon_wand_chaos_gray
 <STRING>ACTIVATION_TYPE:PASSIVE
 <STRING>TARGET_TYPE:SELF
 <FLOAT>RANDOMRANGE:0
 <FLOAT>TURNRATEOVERRIDE:-1
 <STRING>REQUIREMENT_GRAPH:SKILLTIER2_PASSIVE
 <BOOL>SHOW_IN_BUFFLIST:0
 <BOOL>CAN_BE_SILENCED:0
 <INTEGER>LEVEL_REQUIRED:0
 <INTEGER>MAX_INVEST_LEVEL:15
 <INTEGER64>UNIQUE_GUID:6202862666193746822
 [REQUIREMENT_RIGHT]
    <STRING>UNITTYPE:WAND
 [/REQUIREMENT_RIGHT]
 [REQUIREMENT_LEFT]
    <STRING>UNITTYPE:WAND
 [/REQUIREMENT_LEFT]

Many of these elements we've seen before. The only new one here is the [REQUIREMENT_LEFT] and [REQUIREMENT_RIGHT] objects. These objects allow Wand Chaos to specify that it requires a Wand in either the right or left hand. If wanted to add Staffs as a valid weapon type we'd just list it here. The values are based on Unit Types for weapons. You can also check for Shields. Unfortunately only the right and left hand can be checked, you can't check, say, the Head slot for a particular type of Helmet, at least not directly.

On to the Levels and Events:

 [LEVEL2]
    <FLOAT>RANDOMRANGE:0
    [EVENT_START]
       <BOOL>ATTACHES:1
       <BOOL>USEDPS:1
       [AFFIXES]
          <INTEGER>AFFIXLEVEL:1
          <STRING>TARGET:SELF
          <STRING>AFFIX:ARBITER_CHAOS_WAND
       [/AFFIXES]
    [/EVENT_START]
    [EVENT_END]
       <BOOL>NOSTEALEFFECTS:0
       [AFFIXESREMOVE]
          <INTEGER>AFFIXLEVEL:1
          <STRING>TARGET:SELF
          <STRING>AFFIX:ARBITER_CHAOS_WAND
       [/AFFIXESREMOVE]
    [/EVENT_END]
 [/LEVEL2]

I chose to look at level 2 here instead of level 1, because level 1 uses a special Affix that breaks out from the pattern of the other 14 levels. Anyway, basically what you have in this structure is very similar to what we saw in Dodge Mastery in the previous walkthrough on Passive skills. The Event_Start sets up an affix called ARBITER_CHAOS_WAND with a specified AFFIXLEVEL, and the EVENT_END removes it. (Notably, EVENT_END is also called if the player unequips a wand because as we saw in the previous section wands are a requirement of this skill.)

(NOTE: I have no idea what the purpose of <BOOL>ATTACHES:1, <BOOL>USEDPS:1, or <BOOL>NOSTEALEFFECTS:0 is for this skill. My understading is that attaches is normally used for Layouts (which this skill doesn't have), USEDPS applies to damage (which this skill doesn't do), and NOSTEALEFFECTS refers to life and mana steal (which makes no sense in this context). These things would have meaning in the actual procs, sure, but the parent skill? I suspect they are legacy settings from an older version of the power and Runic never removed them. But it's also possible I'm missing something important.)

The only real difference from Dodge Mastery here is the effect being set up. Instead of DODGE CHANCE it's CAST SKILL ON STRIKE, which basically grants the target (self, in this case) a chance to cast a skill whenever an attack is made. Let's take a look at that Affix:

[AFFIX]
   <STRING>NAME:ARBITER_CHAOS_WAND
   <INTEGER>RANK:0
   <INTEGER>MIN_SPAWN_RANGE:0
   <INTEGER>MAX_SPAWN_RANGE:999
   <FLOAT>DURATION:0
   <INTEGER>WEIGHT:0
   <INTEGER>SLOTS_OCCUPY:0
   [EFFECT]
      <STRING>NAME:Chaos Wand
      <STRING>ACTIVATION:PASSIVE
      <STRING>TYPE:CAST SKILL ON STRIKE
      <STRING>STATMODIFYNAME:EFFECT LEVEL
      <STRING>STATMODIFYPERCENT:25
      <BOOL>MODIFIERISBONUS:true
      <FLOAT>MIN:8
      <FLOAT>MAX:8
   [/EFFECT]
[/AFFIX]

The nature of our Affix configuration for this skill is a little different than before, partly owing to the type of Effect being set up and partly owing to different ways to do the same thing.

The first part is the NAME. When using CAST SKILL ON STRIKE, the value in the NAME field of the Effect is no longer arbitrary. Instead it's a reference to the NAME field of the skill we want to set up a chance to proc, in this case “Chaos Wand” (which we briefly mentioned earlier). Get this wrong and you'll see “Chance to cast ???” in the affix previewin-game.

MIN and MAX are always the same value and represent the base chance to roll the proc. In this case that chance is 8%.

Unlike Dodge Mastery, Wand Chaos doesn't use a graph to modify the base values. Runic instead decided to set it up using a stat modifier. STATMODIFYNAME:EFFECT LEVEL is the name of the stat being used to modify the stat values–despite this name, this is actually the <INTEGER>AFFIXLEVEL passed from the Affix assignment seen earlier. So in other words, each rank of Wand Chaos Passive will increase it. Specifically, we will multiply the adjusted value of the affix by the specified stat.

STATMODIFYPERCENT:25 means that 25% of MIN and MAX will apply. 25% of 8 is 2. Because <BOOL>MODIFIERISBONUS:true, we then add the result value of the calculation back to the base value (8 + 2) instead of replacing the base value completely. If we take all this together, what it means is: for each rank add, 25% of 8 to 8. At rank 2, 8 + 2= 10. At rank 3, 8 + 4 = 12.

Expressed as a math formula it looks like this (I think, my math is terrible so this could be wrong:

((STATMODIFYPERCENT * MINMAX) * value of stat specified in STATMODIFYNAME field) + MINMAX

Okay, on to Chaos Wand.

 <STRING>NAME:Chaos Wand
 <TRANSLATE>DISPLAYNAME:a Bizarre Effect
 <STRING>ACTIVATION_TYPE:NORMAL
 <STRING>TARGET_ALIGNMENT:EVIL
 <STRING>TARGET_TYPE:TARGET
 <FLOAT>RANDOMRANGE:0
 <FLOAT>RANGE:20
 <FLOAT>TURNRATEOVERRIDE:-1
 <BOOL>HIDDEN:1
 <BOOL>DONT_STOP_ON_DEATH:1
 <BOOL>CAN_BE_SILENCED:0
 <INTEGER64>UNIQUE_GUID:-1105068057612173704
 [REQUIREMENT_RIGHT]
    <STRING>UNITTYPE:WAND
 [/REQUIREMENT_RIGHT]
 [REQUIREMENT_LEFT]
    <STRING>UNITTYPE:WAND
 [/REQUIREMENT_LEFT]

Chaos Wand's DISPLAYNAME is “a Bizzare Effect.” That's why the preview text for Wand Chaos displays as “8% Chance to cast a Bizzare Effect.”

Otherwise there is nothing particularly unusual about this skill versus what we've seen in other skills so far. The main important difference between this skill and others is that <BOOL>HIDDEN:1 is set. This needs to be done for any skill you don't want players to be able to cast from the skillbar or receive respec points for respeccing out of.

Next up, the level code. Chaos Wand has only one level:

 [LEVEL1]
    <FLOAT>RANDOMRANGE:0
    [EVENT_START]
       <STRING>FILE:media/skills/arbiter/wandchaos/chaoswarmup.layout
       <BOOL>CASTFROMTARGET:1
       <STRING>FIREFROMBONE:RIGHTHAND
       <INTEGER>EXECUTE_SKILL_COUNT:1
       [EXECUTE_SKILL]
          <BOOL>RETARGETONEXECUTE:1
          <STRING>SKILL:WC_AcidRain
          <STRING>SKILL:WC_BloodWash
          <STRING>SKILL:WC_FireStorm
          <STRING>SKILL:WC_Glacial Spike
          <STRING>SKILL:WC_Meteor Strike
          <STRING>SKILL:WC_ThunderStorm
          <STRING>SKILL:WC_Zombie Proc Skill
          <STRING>SKILL:WC_Chaotic Rift
          <STRING>SKILL:WC_BlindCloud
       [/EXECUTE_SKILL]
    [/EVENT_START]
 [/LEVEL1]

The EVENT_START code is called immediately when this skill fires. (Note that EVENT_START is a requirement for procs like this because there are no triggers. We couldn't use EVENT_TRIGGER and expect anything to happen.)

<STRING>FILE:media/skills/arbiter/wandchaos/chaoswarmup.layout This is a reference to a Layout file containing a pretty particle effect to play.

<BOOL>CASTFROMTARGET:1 This flag indicates that this Event should be cast from the target rather than the true caster. Note that this refers to the Layout file of this Event and not the EXECUTE_SKILL effect below. Or so I think.

<STRING>FIREFROMBONE:RIGHTHAND This very cool setting causes the Layout called by the Event to attach itself to a bone on the caster. If the caster's hand moves (eg as part of an animation) the Layout will even move with it. The names of bones are predefined.

<INTEGER>EXECUTE_SKILL_COUNT:1 Indicates that the EXECUTE_SKILL object below should randomly select one skill to execute. If this weren't set, EXECUTE_SKILL would execute all of them.

       [EXECUTE_SKILL]
          <BOOL>RETARGETONEXECUTE:1
          <STRING>SKILL:WC_AcidRain
          <STRING>SKILL:WC_BloodWash
          <STRING>SKILL:WC_FireStorm
          <STRING>SKILL:WC_Glacial Spike
          <STRING>SKILL:WC_Meteor Strike
          <STRING>SKILL:WC_ThunderStorm
          <STRING>SKILL:WC_Zombie Proc Skill
          <STRING>SKILL:WC_Chaotic Rift
          <STRING>SKILL:WC_BlindCloud
       [/EXECUTE_SKILL]

EXECUTE_SKILL objects tell the code to immediately call another skill. Unlike the CAST SKILL ON we saw earlier, this instruction is immediate. The value specified in the SKILL: field is the global NAME field of the skill. We should always be sure that skill is set to HIDDEN:1 to ensure there are no internal issues. Other than that, we could add or remove any effect we wanted to Wand Chaos just by adding or removing it to the EXECUTE_SKILL object here.

<BOOL>RETARGETONEXECUTE:1 means that the effect should be cast at the entity that triggered the skill, not the owner of the effect (that is, the player). If you didn't set this then the skill called by EXECUTE_SKILL would target the player and potentially drop a comet on his or her head. Good for laughs but probably not what you intended. :)


Continue the Walkthrough with Missiles


passive_skill_chaos_wand.txt · Last modified: 2015/10/11 20:14 by lolesch