User:Sunjammer/90210

From Dragon Age Toolset Wiki
Jump to: navigation, search

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).

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.