User:Sunjammer/90210
90210 is an event type literal that is used in a number of scripts but which does not have a symbolic constant declared in script.ldf or any include file. The event is routed through rules_core to ability_core.
Event type 90210 is used where the initial impact can results in secondary impacts on a different target (the Chain Lightning, Scattershot and Stinging Swarm spells); where the initial impact on the target results in a beneficial impact on the caster (Death Magic, Death Syphon, Drain Life and Mana Drain spells; and the Devour talent); or where the event creator needs to destroy itself after a variable delay (traps).
Contents
Usage
spell_chainlightning
Construction
// in a loop event ev = Event(90210); ev = SetEventInteger(ev, 0, stEvent.nAbility); ev = SetEventObject(ev, 0, stEvent.oTarget); // oCaster ev = SetEventObject(ev, 1, secondaryTargets[i]); ev = SetEventObject(ev, 2, stEvent.oCaster); SetProjectileImpactEvent(oPrj, ev);
// SPELL_SECONDARY_IMPACT event event ev = Event(90210); ev = SetEventInteger(ev, 0, nAbility); ev = SetEventInteger(ev, 1, ++nCount); ev = SetEventObject(ev, 0, oTarget); ev = SetEventObject(ev, 2, oOriginalCaster); // ... then in a loop ... ev = SetEventObject(ev, 1, secondaryTargets[i]); SetProjectileImpactEvent(oPrj, ev);
Consumption
object oTarget = GetEventObject(ev,1); object oCaster = GetEventObject(ev,0); int nAbility = GetEventInteger(ev,0); int nCount = GetEventInteger(ev, 1); object oOriginalCaster = GetEventObject(ev, 2);
spell_deathmagic
Construction
event ev2 = Event(90210); ev2 = SetEventInteger(ev2, 0, nAbility); ev2 = SetEventObject(ev2, 0, oCreator); ev2 = SetEventObject(ev2, 1, oCreator); SetProjectileImpactEvent(oProjectile, ev2);
Consumption
struct EventSpellScriptImpactStruct stEvent = Events_GetEventSpellScriptImpactParameters(ev);
spell_deathsyphon
Construction
event ev2 = Event(90210); ev2 = SetEventInteger(ev2, 0, nAbility); ev2 = SetEventObject(ev2, 0, oCreator); ev2 = SetEventObject(ev2, 1, oCreator); SetProjectileImpactEvent(oProjectile, ev2);
Consumption
struct EventSpellScriptImpactStruct stEvent = Events_GetEventSpellScriptImpactParameters(ev);
spell_drainlife
Construction
event ev = Event(90210); ev = SetEventInteger(ev, 0, stEvent.nAbility); ev = SetEventObject(ev, 0, stEvent.oCaster); ev = SetEventObject(ev, 1, stEvent.oCaster); ev = SetEventFloat(ev, 0, fDamage); SetProjectileImpactEvent(oProjectile, ev);
Consumption
struct EventSpellScriptImpactStruct stEvent = Events_GetEventSpellScriptImpactParameters(ev); float fHeal = GetEventFloat(ev, 0);
spell_drainmana
Construction
event ev = Event(90210); ev = SetEventInteger(ev, 0, stEvent.nAbility); ev = SetEventObject(ev, 0, stEvent.oCaster); ev = SetEventObject(ev, 1, stEvent.oCaster); ev = SetEventFloat(ev, 0, fMana); SetProjectileImpactEvent(oProjectile, ev);
Consumption
struct EventSpellScriptImpactStruct stEvent = Events_GetEventSpellScriptImpactParameters(ev); float fMana = GetEventFloat(ev, 0);
spell_stingingswarm
Construction
In effect_swarm_h:
// in a loop event ev = Event(90210); ev = SetEventInteger(ev, 0, nAbility); ev = SetEventInteger(ev, 1, nJumps); ev = SetEventObject(ev, 0, oOwner); ev = SetEventObject(ev, 1, oTargets[nTarget]); ev = SetEventFloat(ev, 0, fDamage);
Consumption
struct EventSpellScriptImpactStruct stEvent = Events_GetEventSpellScriptImpactParameters(ev); float fDamage = GetEventFloat(ev, 0); int nJumps = GetEventInteger(ev, 1);
talent_devour
Construction
event ev = Event(90210); ev = SetEventInteger(ev, 0, stEvent.nAbility); ev = SetEventObject(ev, 0, stEvent.oCaster); ev = SetEventObject(ev, 1, stEvent.oCaster); SetProjectileImpactEvent(oProjectile, ev);
Consumption
struct EventSpellScriptImpactStruct stEvent = Events_GetEventSpellScriptImpactParameters(ev);
talent_scattershot
Construction
event ev = Event(90210); ev = SetEventInteger(ev, 0, stEvent.nAbility); ev = SetEventObject(ev, 0, stEvent.oTarget); // oCaster ev = SetEventObject(ev, 1, secondaryTargets[i]); ev = SetEventObject(ev, 2, stEvent.oCaster); ev = SetEventObject(ev, 3, oWeapon); SetProjectileImpactEvent(oPrj, ev);
Consumption
object oTarget = GetEventObject(ev,1); object oCaster = GetEventObject(ev,0); int nAbility = GetEventInteger(ev,0); object oWeapon = GetEventObject(ev,3); object oOriginalCaster = GetEventObject(ev, 2);
trap_crafted
Construction
event ev2 = Event(90210); ev2 = SetEventCreator(ev2, oTrap); DelayEvent(fDuration, oTrap, ev2, "trap_crafted");
Consumption
object oTrap = GetEventCreator(ev); DestroyObject(oTrap);
Remarks
In the second looped construction in spell_chainlightning Georg Zoeller's comments refer to as the SPELL_SECONDARY_IMPACT
and in talent_scattershot he terms it as /*the bad event*/
.
90210 is an easy to remember number as it (famously) the zip code for Beverly Hills which may be why it was selected as the literal value for and event type which would never be given a symbolic constant.