Developer's Blog
Old 01-13-2010, 11:52 PM   #1
antiweltteilchen
Forum Staff
 
antiweltteilchen's Avatar
 
Join Date: Jun 2009
Location: germany
Posts: 3,252
antiweltteilchen is offline

Default 6.66 triggers


i start again with some new triggers for 6.66 have a look here and there i'll add stuff with more time.

scream of pain [A04a] based on fan of knives

func1
when a spell goes into effect and the spell is [A04a] call func2

func2
group all visible enemy,nondummy,nonstructure,nonancient except spiritbear units in 400+25*lvl aoe around source and for all of them call func3

func3
save the damage amount dependant on lvl in real1
create a dummy unit at the position of source and every 0.03 seconds move it 21 units in direction of the target.
if the distance before the movement is less than 21 call func4 and destroy teh shizzle

func4
deal real1 damage to the target using attack type spells damage type magic.





devour [A10R] based on channel

func1
when a spell is cast or a spell goes into effect call func2

func2
if the spell is [A10R] and the event was the spell is cast call func6
else if the spell is [A10R] and the event was the spell went into effect call func5
else if the casting unit is doombringer call func 3

func3
if the ability is one of the abilities neutrals posess call func4 when source died or after 1 second

func4
destroy the trigger and flush saved vars...boring

func5
if the targeted unit isn't sentinel owned and the unit isn't scourge owned and the lvl requirement is broken
pause source, order it to stop, unpause source and display "that creature is too powerful"

func6
show the lightning effect between source and target for 0.5 seconds
call func8
set devour ability to unavailable
add the ability showing the "you are devouring shizzle"
call func7 every 0.05 seconds or when source died
hide the target remove all buffs from it and deal 100mio physical damage to it

func7
if max(life-triggercount,0)=0 add 20+20*lvl gold to source
if max(life-triggercount,0)=0 or source died set the devour ability to available and remove the other ability and destroy the trigger

func8
if the devoured unit got an ability call func9
add all it's abilities to source (the ability checks are all done sperately, the abilities aren't the exact same like on the neutrals but were adapted to fit luci. for example the frost arrow ability of ghost will give an orb of frost ability to luci)
this is how it actually looks like
Code:
function Func2470 takes unit loc_unit01,unit loc_unit02 returns nothing
  local integer loc_integer01=GetUnitTypeId(loc_unit02)
  local integer loc_integer02=0
  local integer loc_integer03=0
  if loc_integer01=='n0HX' then
    set loc_integer02='A1OQ'
  elseif loc_integer01=='nomg' then
    set loc_integer02='A1OR'
  elseif loc_integer01=='nfpu' then
    set loc_integer02='A1OS'
  elseif loc_integer01=='nstl' then
    set loc_integer02='A1OT'
  elseif loc_integer01=='nsat' then
    set loc_integer02='A1OU'
  elseif loc_integer01=='nsth' then
    set loc_integer02='A1OV'
    set loc_integer03='A1OW'
  elseif loc_integer01=='n00S' then
    set loc_integer02='A1OX'
    set loc_integer03='A1OY'
  elseif loc_integer01=='nkol' then
    set loc_integer02='S00M'
  elseif loc_integer01=='nfsh' then
    set loc_integer02='A1OZ'
  elseif loc_integer01=='ncnk' then
    set loc_integer02='S00N'
    set loc_integer03='A1P0'
  elseif loc_integer01=='ngns' then
    set loc_integer02='A1P1'
  elseif loc_integer01=='ngh1' then
    set loc_integer02='A1P7'
    set loc_integer03='A1PA'
  elseif loc_integer01=='nowe' then
    set loc_integer02='A1P3'
    set loc_integer03='A1P4'
  elseif loc_integer01=='ndtw' then
    set loc_integer02='A1P5'
    set loc_integer03='A1P6'
  elseif loc_integer01=='nwlg' then
    set loc_integer02='A1OY'
  endif
  if loc_integer02!=0 then
    call Func2469(loc_unit01)
    call UnitAddAbility(loc_unit01,loc_integer02)
  endif
  if loc_integer03!=0 then
    call UnitAddAbility(loc_unit01,loc_integer03)
  endif
endfunction


func9
remove all abilities neutrals posess from source.




Ice Blast [A1MI] based on channel

HP=hero Hp
real1=time the unit was affected by ice blast
counter=0
source=ancient apparition
target=the point ice blast was casted on
angle=angle between target and source
timediff
newpos= position of the first created dummy, later the target point of the second created dummy
newangle
AoE
dist

func1
when Ancient Apparition was picked call func2 every 0.1 seconds
for every player set the spellbook ability containing the ice blast visual to unavailable

func2
for every player's hero do:
[if real1+7+lvl>gametime and the hero is alive
if the hero is near the fountain
set HP=hero Hp

else set HP= hero Hp
if hero Hp<HP set Hp to hero Hp

set the hero's Hp to HP
increase counter by 1

if counter=10 set counter to 0 and make source deal 12.5/20/32 damage to the hero using attack type spells damage type magic depending on the lvl of iceblast
]

else if real1+7+lvl>gametime and the hero is dead set HP=9999

if the hero is affected by the iceblast buff and real1+7+lvl<gametime
remove the spellbook abilities containing the visual and the slow aura ability providing the ice blase buff and the buff itself

func3
if a spell goes into effect call func4

func4 if the spell is [A1MI] call func5

func5
create a dummy [H0B8] at the position of source facing angle
call func6 every 0.02 seconds, a spell of source went into effect or source died
set [A1MI] to unavailable for the player owning source
set [A1MN] to available for the player owning source
add [A1MN] to source

func6
set newpos=position of dummy +30 unit away in direction of angle
set timediff=the time difference between the time the spell went into effect and the actual game time (multiples of 0.02)
set the position of the dummy to newpos
if the trigger was called because source died ot source used [A1MN] or the dummy went out of the playable map area
destroy the trigger and remove the dummy

remove Fog of war in 500 AoE around dummy and call func7

func7
set newangle to be the angle between source and newpos of the dummy
create a dummy [h0B6] at the position of source facing newangle
set AoE to be minimum of (225+50*timediff,1000)
set dist to be the distance between the dummy and newpos
call func8 every minimum(60/dist,0.04) seconds
set [A1MI] to available for the player owning source
set [A1MN] to unavailable for the player owning source

func8
calculate the new position of the dummy (30 units in direction to newpos).
if it's less than 35 units away from newpos or exceedig the playable map area
set the dummies coordinates newpos
destroy the fog modifier providint the 500 AoE vision
destroy the trigger and the dummy
group all enemy nondummy nonstructure alive nonancient units or spiritbear in AoE+25 units around newpos
all for all of them call func9

else set the dummy position to the new position, group all enemy nondummy nonstructure alive nonancient units or spiritbear in 300 AoE around the new position
for each of them call func10

func9
call func11
make source deal the unit with 150+100*lvl damage using attack type spell damage type magic

func10
saving some vars
call func11

func11
if lvl>0 the unit is a nonillusion nonmeepoclone hero
call func12 when the unit is damaged
add [A1JA] and [A1LD] to the unit which are spellbook abilities containing the visual and slow aura for the buff
set real1 to gametime

func12
if the affected hero doesn't have the slow aura buf destroy the trigger

if the damage source isn't owned by the player controlling the affected hero the hero is not affected by shallow grave and the heros currect hp is less than (0.09+0.01*lvl)maxhp
destroy the trigger, remove [A1JA] and [A1LD] from the affected hero and remove the slow aura buff
create a dummy unit e00E at the center of the map
remove all buffs from the affected hero
make the dummy deal 100mio physical damage to the affected hero

note: just some number tweaks.
purgeability is triggered like for some other spells as well, easy 2liner.






charge of darkness [A1p8] based on channel

func1
when [A1p8] goes into effect call func2

func2
make the targeted unit share vision with the player owning source
save in dependancy of lvl an unholy aura ability in abil1 (a0ge,a0gf,a0gg,a0gh)
create a dummy [e00C] at the position of source add it locust, abil1 and [a0gj] which is a faerie fire based ability.
remove source's pathing
call func3 every 1 second,when the target is attacked, source died, target died, source issued an order, or source finished casting a spell
set animation to the second and timescale to 2.5
set [A179] to unavailable (the spell immunity)
save 1 in int1
save 0 in int2
save 0 in int3

func3
if it was called because a unit died or source issued an order{
if int1!=1 [
if int2=1 or the unit died destroy the trigger, unshare vision, remove the faerie fire debuff from the target and the endurance aura buff from source and remove the spell immunity from source]
[else if int2=0 set int2 to 1 and call source to attack the target]}
else if it was called because source finished casting a spell{
save some vars
if int2=0[
set timescale to 2.75 save 1 in int2 call source to attack the target, and if gametime-time at casting point>3.8/2.7/1.2/0 set the endurance aura ability on the dummy to lvl 4/3/2/1]}
if it was called because target was attacked and the attacker is source{
set timescale to 1 for source
destroy the trigger
move the dummy to the position of target
add it [A0GS], a stormbolt based ability, set the level to the same as CoD and use it on the target
remove the dummy, remove the faerie fire and endurance aura buff from target/source
unshare vision and remove spell immunity from source and restore source'2 pathing}
else if int2>0{
if source is null or target is dead or source isn't spiritbreaker or target is etheral or cycloned[
unshare vision, set timescale to 1, destroy the trigger,...the same like above]
else [
call source to attack target increase int3 by 1
if the target hasn't the faerie fire debuff and the distance between it and source is less than 2500 call the dummy to use faerie fire on it
if the endurance aura lvl on the dummy is 4 and source doesn't have the spell immunity ability add it to source.]}
__________________

My Preciousssss
crdits to Infrisios for avatar :>
  Reply With Quote
Last edited by antiweltteilchen; 01-14-2010 at 12:49 PM.
Old 01-14-2010, 12:40 AM   #2
antiweltteilchen
Forum Staff
 
antiweltteilchen's Avatar
 
Join Date: Jun 2009
Location: germany
Posts: 3,252
antiweltteilchen is offline
Default Re: 6.66 triggers

place holder
__________________

My Preciousssss
crdits to Infrisios for avatar :>
  Reply With Quote
Old 01-14-2010, 06:33 AM   #3
SNOW37
Member
 
SNOW37's Avatar
 
Join Date: Jun 2009
Location: Canada
Posts: 999
Blog Entries: 2
SNOW37 is offline
Default Re: 6.66 triggers

how did you get the new trigger so quickly anit?
Great job btw, interesting that ice used a triggered projectile for scream of pain, instead of just a dummy spell.
__________________
You can call me LEMONS
  Reply With Quote
Old 01-14-2010, 10:15 AM   #4
Ajen
Member
 
Join Date: Jun 2009
Posts: 21
Ajen is offline
Default Re: 6.66 triggers

One more question concerning Qop now: Now that I realised that the projectile is triggered now and the damage is also dealt via a trigger shouldn't the newly coded Scream of Pain be able to hit units who turn invisible while the projectile is flying ? Meaning that when the trigger initially checks for them beeing visible, they are but then during the time the projectile takes to reach them they turn invisible, they should take the damage because the trigger does not check again if they are visible. Seems to me very smilar how Spirit Lance is coded which is stated to deal damage to targets turning invisible during the time the projectile flies. (Taken from your guide to Invisibility) This would be a slight buff to QoP in eg. killing Clinks or other windwalkers

Is this correct ? If not please enlighten me

Ajen
  Reply With Quote
Old 01-14-2010, 11:18 AM   #5
antiweltteilchen
Forum Staff
 
antiweltteilchen's Avatar
 
Join Date: Jun 2009
Location: germany
Posts: 3,252
antiweltteilchen is offline
Default Re: 6.66 triggers

yes, that'S correct.
__________________

My Preciousssss
crdits to Infrisios for avatar :>
  Reply With Quote
Old 01-14-2010, 11:21 AM   #6
BBQ
Member
 
BBQ's Avatar
 
Join Date: Jul 2009
Location: Where the magic is.
Posts: 639
BBQ is offline
Default Re: 6.66 triggers

[A1OP] Scorched Earth

The base spell is Fan of Knives which provides the ability icon and the targeting function.

Variables
  • Source //Lucifer
  • Level //The level of Scorched Earth ability
Abilities
  • [A1OP] //Scorched Earth (Cast by Lucifer)
  • [A1OL] //Spellbook ability used for level 1 Scorched Earth which provides the burning effect, movement speed and regeneration bonus
  • [A1ON] //Spellbook ability used for level 2 Scorched Earth which provides the burning effect, movement speed and regeneration bonus
  • [A1OO] //Spellbook ability used for level 3 Scorched Earth which provides the burning effect, movement speed and regeneration bonus
  • [A1OM] //Spellbook ability used for level 4 Scorched Earth which provides the burning effect, movement speed and regeneration bonus
Functions
  • Function 2
    Store the triggering unit as Source
    Store the level of the [A1OP] ability as Level

    If [Level = 1] then
    Add the [A1OL] ability to Source
    Set the [A1OL] ability to be unavailable to Source
    Else if [Level = 2] then
    Add the [A1ON] ability to Source
    Set the [A1ON] ability to be unavailable to Source
    Else if [Level = 3] then
    Add the [A1OO] ability to Source
    Set the [A1OO] ability to be unavailable to Source
    Else if [Level = 4] then
    Add the [A1OM] ability to Source
    Set the [A1OM] ability to be unavailable to Source
    Create a timer which runs out after 6+2*Level seconds
    Call Function 3 when the timer runs out
    If Condition 2If Source died ... is satisfied then
    Call Function 3
  • Function 3
    Remove the [A1OL] ability from Source
    Remove the [A1ON] ability from Source
    Remove the [A1OO] ability from Source
    Remove the [A1OM] ability from Source
    Remove the [B04J] ability from Source //This is the buff ID of the Unholy Aura abilities
    Destroy this trigger
Conditions
  • Condition 1
    If the spell which went into effect was [A1OP] ...
  • Condition 2
    If Source died ...
Notes
The Spellbook abilities given to Lucifer contain the following abilities:
  • The [A1OJ]/[A1OH]/[A1OK]/[A0FF] Unholy Aura based abilities which provide the 20% movement speed increase and 10/20/25/30 HP/sec regeneration bonus.
  • The [A1OE]/[A1OF]/[A1OG]/[A1OD] Building Damage Aura (Tornado) based abilities which provide the burning effect.
  • The buff ID of the Unholy Aura abilities is [B04J] with "self" as allowed targets.
  • The buff ID of the Building Damage Aura (Tornado) abilities is [B04K].
__________________

Rest in peace, David Gold.
  Reply With Quote
Last edited by BBQ; 07-07-2010 at 02:58 PM.
Old 01-14-2010, 11:23 AM   #7
BBQ
Member
 
BBQ's Avatar
 
Join Date: Jul 2009
Location: Where the magic is.
Posts: 639
BBQ is offline
Default Re: 6.66 triggers

Slark, the Murloc Nightcrawler

[A1IM] Dark Pact

The base spell is Fan of Knives which provides the targeting function and the ability icon.

Variables
  • Source //Murloc Nightcrawler
  • Level //The level of the Dark Pact ability
  • SourceX //The X-coordinate of Slark
  • SourceY //The Y-coordinate of Slark
  • DarkPactFX //The [h0B2] dummy unit usedwhich provides the visuals
  • Modifier //The value used to calculate the self-damage
  • EnumUnit //The unit which is currently being processed
  • Group1 //The group to be damaged
Abilities
  • [A1IM] //Dark Pact (cast by Murloc Nightcrawler)
Functions
  • Function 2
    Store the triggering unit as Source
    Store the level of the [A1IM] ability as Level
    Set Modifier to Level*75/2
    Create a timer which runs out after 2 seconds
    Call Function 3 when the timer runs out
    If [Source died] then
    Call Function 3
    If [GetUnitState(Source,UNIT_STATE_LIFE) ≤ Modifier*0.75] then
    Set Modifier to GetUnitState(Source,UNIT_STATE_LIFE)/0.75-10
    Make Source damage Source for Modifier magic damage //ATTACK_TYPE_NORMAL,DAMAGE_TYPE_FIRE
  • Function 3
    Get the X-coordinate of Source and store it as SourceX
    Get the Y-coordinate of Source and store it as SourceY
    If [this function was called because Source died] then
    Destroy this trigger
    Else
    If [TriggerCalls=1] then
    Create a [h0B2] dummy unit for the owner of Source at (SourceX, SourceY) and store this unit as DarkPactFX
    Apply a timed life of 1 second to DarkPactFX
    Create a timer which runs at a 0.1 second interval
    Else
    If [TriggerCalls=6] then
    Destroy this trigger
    Group all units which satisfy Condition 2
    Is a living enemy non-dummy non-structure non-ancient (except Spirit Bear) unit ...
    within 350 AoE around (SourceX, SourceY) and store them as Group1
    For Group1
    Call Function 4 for each interval
    For Source
    Call Function 5 for each interval
  • Function 4
    Make Source damage EnumUnit for Level*75/5 magic damage //ATTACK_TYPE_NORMAL,DAMAGE_TYPE_FIRE
  • Function 5
    Remove the following buffs from Source:
  • [B06Z]-Quillbeast Poison
  • [BPSE]-Hellfire Blast, War Stomp, Light Strike Array, Magic Missile, Headshot, Chaos Bolt, Reverse Polarity, Split Earth, Shuriken Toss, MKB's Bash, Hoof Stomp, Basher's Bash, Sunder Stun, Troll's Bash, Assassinate Stun, Fireblast, Ravage, Reaper's Scythe's Stun, Dragon Tail, Aftershock, Craggy Exterior, Avalanche, Mana Void's Stun, Charge of Darkness' Stun, Slardar's Bash, Malefice's Stun...
  • [B06Q]-Primal Roar's Slow
  • [BSTN]-Expulsion's Ministun, Dream Coil's Stuns (both), Fissure, Cold Snap's Ministun
  • [BHtc]-Thunder Clap's Slow
  • [B0BM]-Echo Stomp
  • [B0BR]-Earth Splitter slow
  • [B0C1]-Spirit Bear's Entangle
  • [BEer]-Overgrowth's Entangle
  • [B02U]-Viscous Nasal Goo
  • [B07E]-Poison Touch's Stun, Poison Touch's Slow
  • [B0CF]-Cold Feet Stun
  • [B06M]
  • [B07N]-Meat Hook's Ministun
  • [B08S]
  • [B00Q]
  • [B072]-Unstable Concoction's Stun
  • [BUan]
  • [B095]-Battery Assault
  • [B083]-Life Break's Slow
  • [B02V]-Epicenter's Slow
  • [B01Y]-Charge of Darkness' Faerie Fire
  • [BNab]-Gush
  • [B08R]-Open Wounds' Slow
  • [B066]-Frostmourne's Slow
  • [B03I]-Dismember
  • [B063]-Slithereen Crush's Slow
  • [Bena]-Ensnare
  • [Beng]-Ensnare
  • [B03C]-Spirit Lance's Slow
  • [B00L]-Track
  • [BHca]-Frost Arrows / Frost Attack
  • [Bcsd]-Frost Arrows 2nd position / Frost Attack 2nd position
  • [B079]-Geostrike
  • [B0BQ]-Stone Gaze's Purge
  • [B0B9]
  • [Bprg]-Many other Purges
  • [B08M]-Psionic Trap's Slow
  • [B02G]-Earthshock
  • [B01X]-Bloodrage
  • [B01D]-Drunken Haze level 1, Incapacitating Bite
  • [B092]-Stifling Dagger's Slow
  • [B0AQ]-Venomous Gale
  • [BEsh]-Many other Shadow Strikes
  • [B001]-Viper Strike
  • [B017]-Frostbite
  • [B0AE]-Electric Vortex
  • [B0AD]-Electric Vortex 2nd position
  • [B08O]-Waning Rift Silence
  • [Bfro]-Eye of Skadi (both Melee and Ranged), Frost Breath, Crystal Nova, Frost Armor, Frost Attack (Lucy), Frost Nova, Chain Frost, Dual Breath's slow
  • [B027]
  • [B028]-Poison Nova's Phoenix Fire
  • [B05H]-Penitence Slow
  • [B0BS]-Sticky Napalm
  • [Bcri]-Grave Chill
  • [B0BF]-Flaming Lasso
  • [B0BE]-Flaming Lasso 2nd position
  • [B090]-Shackles
  • [B008]-Shackles 2nd position
  • [B06W]
  • [B04B]-Fiend's Grip
  • [B02F]-Nightmare
  • [BUsp]
  • [Bust]
  • [B0CC]-Cold Feet
  • [BCri]
  • [B03J]-Ignite
  • [BEsh]-Shadow Strike
  • [B001]-Viper Strike
  • [B0AQ]-Venomous Gale
  • [Bena]-Ensnare
  • [Beng]-Ensnare
  • [B078]-Earthbind
  • [Bdet]-Dust of Appearance
  • [A1LD]-Ice Blast's FX
  • [B0CD]-Ice Blast
  • [A1JA]-Ice Blast's Slow Aura
  • [Bslo]-Enchant Slow
  • [B00T]-Amplify Damage
  • [BNdh]-Drunken Haze level 2/3/4
  • [B07V]-Traxex's Silence
  • [B07U]-Global Silence
  • [B0C8]
  • [B01X]-Bloodrage
  • [BNsi]-Krobelus' Silence, Last Word's Soul Burn
  • [BNso]
  • [B031]-Orchid's Silence
  • [B08O]-Waning Rift's Silence

Conditions
  • Condition 1
    If the spell which went into effect was [A1IM] ...
  • Condition 2
    Is a living enemy non-dummy non-structure non-ancient (except Spirit Bear) unit ...
Notes
The [h0B2] dummy unit has the following model path: war3mapImported\SuperDarkFlash

[A1J7] Pounce

The base spell is Channel which provides the targeting function and the ability icon.

Variables
  • Source //Murloc Nightcrawler
  • Level //The level of the Pounce ability
  • FinalLoc //The maximum range of Pounce
  • DistanceRemainder //The remaining distance for Slark to travel
  • FacingAngle //The angle Slark is facing when Pounce goes into effect
  • StartX //The X-coordinate of Slark at the moment Pounce goes into effect
  • StartY //The Y-coordinate of Slark at the moment Pounce goes into effect
  • FinalLocX //The X-coordinate of the farthest point Slark can jump to
  • FinalLocY //The Y-coordinate of the farthest point Slark can jump to
  • EvalCount //The number of times Function 3 has been called
  • MoveDistanceX //The X value for which Slark is moved each iteration
  • MoveDistanceY //The Y value for which Slark is moved each iteration
  • MaxHeight //A value used to modify the fly height of Slark while pouncing
  • HeightModifier //A value used to modify the fly height of Slark while pouncing
  • Group1 //The group from which the target is picked
  • Target //The leashed enemy
  • Lightning //The lightning visual
  • EndX //The X-coordinate of Slark at the moment of impact
  • EndY //The Y-coordinate of Slark at the moment of impact
  • TargetX1 //The X-coordinate of the leashed enemy
  • TargetY1 //The Y-coordinate of the leashed enemy
  • TargetX2 //The X-coordinate of the leashed enemy compared to the previous one
  • TargetY2 //The Y-coordinate of the leashed enemy compared to the previous one
  • Distance //The distance which the leashed enemy has moved between two checks
  • Angle //The angle between the leashed enemy and the point of impact
  • ReturnX //The X value to which the leashed enemy will be returned when it moves more than 325 distance
  • ReturnY //The Y value to which the leashed enemy will be returned when it moves more than 325 distance
Abilities
  • [A1J7] //Pounce
  • [Amrf] //Crow Form
  • [A1J6] //Ability containing the visuals of Pounce
Functions
  • Function 2
    Store the triggering unit as Source
    Store the level of the [A1J7] ability as Level
    Set FinalLoc to 300+100*Level
    Store the angle Source is facing as FacingAngle
    Get the X-coordinate of Source and store it as StartX
    Get the Y-coordinate of Source and store it as StartY
    Set FinalLocX to be StartX + FinalLoc in FacingAngle direction
    Set FinalLocY to be StartY + FinalLoc in FacingAngle direction
    Add the [Amrf] ability to Source
    Remove the [Amrf] ability from Source
    Set the pathing of Source to False
    Add the [A1J6] ability to Source
    Create a timer which runs at a 0.03 second interval
    Call Function 3 for each interval
  • Function 3
    Store the number of times this function has been called as EvalCount
    Set MoveDistanceX to StartX+(30*(20+Level*2)/30)*EvalCount in FacingAngle direction
    Set MoveDistanceY to StartY+(30*(20+Level*2)/30)*EvalCount in FacingAngle direction
    Calculate the distance between (MoveDistanceX, MoveDistanceY) and (FinalLocX, FinalLocY) and store it as DistanceRemainder
    Set MaxHeight to 175
    Set HeightModifier to (1-DistanceRemainder/FinalLoc)*MaxHeight*2
    If [EvalCount = 1] then
    Set the Animation of Source to 5
    Set the Time Scale of Source to 1.5
    If [HeightModifier > MaxHeight] then
    Set the Animation of Source to 5
    Set HeightModifier to MaxHeight*2-HeightModifier
    Set the Fly Height of Source to HeightModifier
    Set the X-coordinate of Source to MoveDistanceX
    Set the X-coordinate of Source to MoveDistanceY
    Make Source face FacingAngle
    Group all units which satisfy Condition 2
    Is a living enemy non-dummy non-structure non-ancient (except Spirit Bear) unit ...
    in 110 AoE around (MoveDistanceX, MoveDistanceY) and store them as Group1
    Pick the first unit from Group1 and store it as Target
    If [DistanceRemainder < 30] or [EvalCount > 75] or [Target != null] then
    Set the Fly Height of Source to 0
    Set the Time Scale of Source to 1
    Make Source play its "Stand" animation
    Set the pathing of Source to True
    Remove the [A1J6] ability from Source
    Destroy destructables in a 200x200 rectangle around Source
    If [Target != null] and [Target is not magic immune] then
    Call Function 4
  • Function 4
    Add the PONC lightning visual between the coordinates of Source and Target and store its handle as Lightning
    Get the X-coordinate of Source and store it as EndX
    Get the Y-coordinate of Source and store it as EndY
    Get the X-coordinate of Target and store it as TargetX1
    Get the Y-coordinate of Target and store it as TargetY1
    Create a timer which runs at a 0.03 second interval
    Call Function 5 for each interval
    If [Target died] then
    Call Function 5
    Make Source damage Target for 25+25*Level magic damage //ATTACK_TYPE_NORMAL,DAMAGE_TYPE_FIRE
    Order Source to attack Target
  • Function 5
    Get the X-coordinate of Target and store it as TargetX2
    Get the Y-coordinate of Target and store it as TargetY2
    Calculate the distance between (TargetX1, TargetY1) and (TargetX2, TargetY2) and store it as Distance
    Set TargetX1 to TargetX2
    Set TargetY1 to TargetY2
    If [Distance > 100] or [TriggerCalls > 3.5/0.03] or [Target is magic immune] then
    Destroy Lightning
    Destroy this trigger
    Else
    Move Lightning to (EndX, EndY, TargetX2, TargetY2)
    If [the distance between (EndX, EndY) and (TargetX2, TargetY2) is greater than 325] then
    Calculate the angle between (TargetX2, TargetY2) and (EndX, EndY) and store it as Angle
    Set ReturnX to EndX + 325 in Angle direction
    Set ReturnY to EndY + 325 in Angle direction
    Set the X-coordinate of Target to ReturnX
    Set the Y-coordinate of Target to ReturnY
Conditions
  • Condition 1
    If the spell which went into effect was [A1J7] ...
  • Condition 2
    Is a living enemy non-dummy non-structure non-ancient (except Spirit Bear) unit ...

[A1HR] Essence Shift

The base spell is Evasion which provides the ability icon.

Variables
  • Source //Slark
  • Level //The level of the Essence Shift ability
  • Modifier //The value used to determine the main attribute of the attacked hero
  • Target //The attacked unit
  • EssenceShiftCooldown //An integer used to determine whether Essence Shift is on cooldown
  • ModifierAgi //The value used to determine the amount of "stolen" Agility
  • ModifierStr //The value used to determine the amount of "stolen" Strength
  • ModifierInt //The value used to determine the amount of "stolen" Intelligence
  • Boolean1 //A Boolean used to control the restoration of the stats
  • Boolean2 //A Boolean used to control the restoration of the stats
Abilities
  • [A1HR] //Essence Shift (possessed by Murloc Nightcrawler)
Functions
  • Function 3
    If [(EssenceShiftCooldown = 1) = False] then
    Call Function 10
    Call Function 4
  • Function 4
    Store the triggering unit as Target //This is basically the unit you started the attack against
    Store the attacker as Source
    Create a timer which runs out after 1 seconds
    Call Function 5 when the timer runs
    If [Target was damaged] then
    Call Function 5
  • Function 5
    If [this function was called because Target was damaged] then
    If [Source = GetEventDamageSource()] then
    Create a timer which runs out after 0.01 second
    Call Function 6 when the timer runs out
    If [Source died] then
    Call Function 6
    If [Target died] then
    Call Function 6
    Else
    Destroy this trigger
  • Function 6
    If [this function was not called because a unit died] then
    Call Function 7
  • Function 7
    Store the level of the [A1HR] ability as Level
    For Target
    Call Function 8
    If [Modifier=2] then
    Set ModifierAgi=Min(GetHeroAgi(Target,NoBonuses)-1,2)
    If [(GetHeroAgi(Target,NoBonuses)-1) < 2] then
    Set ModifierAgi=GetHeroAgi(Target,NoBonuses)-1
    Else
    Set ModifierAgi=2 //This is how the 'IMinBJ' function works. All the other Stat Modifiers are assigned according to it and explaining every single one of them would be rather annoying, so refer to this one
    If [Modifier=2] then
    Set ModifierStr=Min(GetHeroStr(Target,NoBonuses)-1,1)
    Set ModifierInt=Min(GetHeroInt(Target,NoBonuses)-1,1)
    If [Modifier=3] then
    Set ModifierAgi=Min(GetHeroAgi(Target,NoBonuses)-1,1)
    Set ModifierStr=Min(GetHeroStr(Target,NoBonuses)-1,2)
    Set ModifierInt=Min(GetHeroInt(Target,NoBonuses)-1,1)
    If [Modifier=1] then
    Set ModifierAgi=Min(GetHeroAgi(Target,NoBonuses)-1,1)
    Set ModifierStr=Min(GetHeroStr(Target,NoBonuses)-1,1)
    Set ModifierInt=Min(GetHeroInt(Target,NoBonuses)-1,2)
    Set the agility of Source to GetHeroAgi(Source,NoBonuses) + ModifierAgi + ModifierInt + ModifierStr
    Set the agility of Target to GetHeroAgi(Target,NoBonuses) - ModifierAgi
    Set the strength of Target to GetHeroStr(Target,NoBonuses) - ModifierStr
    Set the intelligence of Target to GetHeroInt(Target,NoBonuses) - ModifierInt
    Set Boolean1 to False
    Set Boolean2 to False
    Create a timer which runs out after 15*Level seconds
    Call Function 9 when the timer runs out
    If [Source died] then
    Call Function 9
    If [Target died] then
    Call Function 9
  • Function 8
    If [the main attribute of Target is Agility] then
    Set Identifier to 2
    If [the main attribute of Target is Strength] then
    Set Identifier to 3
    If [the main attribute of Target is Intelligence] then
    Set Identifier to 1
    If [the unit ID of Target is [Eevm] or [N02B] or [N017] or [N013] or [N014] or [N015] or [H08D] or [H08C] or [H084] or [H08B]] then
    Set Identifier to 2
    If [the unit ID of Target is [N01H] or [N01T] or [N01J] or [H00E] or [H00G] or [H00F] or [H07I] or [E015]] then
    Set Identifier to 3
    If [the unit ID of Target is [H06X] or [H06Y] or [H06W] or [H0BC] or [O017]] then
    Set Identifier to 1
  • Function 9
    If [this function was called because a unit died] then
    If [Boolean1 = False and the unit which died is Source] then
    Set Boolean1 to True
    Set the agility of Source to GetHeroAgi(Source,NoBonuses) - ModifierAgi - ModifierInt - ModifierStr
    Else if [Boolean2 = False and the unit which died is Target] then
    Set Boolean2 to True
    Set the agility of Target to GetHeroAgi(Target,NoBonuses) + ModifierAgi
    Set the strength of Target to GetHeroStr(Target,NoBonuses) + ModifierStr
    Set the intelligence of Target to GetHeroInt(Target,NoBonuses) + ModifierInt
    Else
    If [Boolean1 = False] then
    Set Boolean1 to True
    Set the agility of Source to GetHeroAgi(Source,NoBonuses) - ModifierAgi - ModifierInt - ModifierStr
    If [Boolean2 = False] then
    Set Boolean2 to True
    Set the agility of Target to GetHeroAgi(Target,NoBonuses) + ModifierAgi
    Set the strength of Target to GetHeroStr(Target,NoBonuses) + ModifierStr
    Set the intelligence of Target to GetHeroInt(Target,NoBonuses) + ModifierInt
  • Function 10
    Set EssenceShiftCooldown to 1
    Create a timer which runs out after 0.45 - Level*0.05 seconds
    Call Function 11 when the timer runs out
  • Function 11
    Set EssenceShiftCooldown to 2

Conditions
  • Condition 1
    If the [A1HR] ability was learned for the first time and the learning unit was not an illusion ...
  • Condition 2
    If the attacker has the [A1HR] ability and the attacked unit is an enemy non-Roshan non-structure hero unit and the attacker is Source ...
Notes
The 0.01 second delay is used in order to fix the "issue" with Shallow Grave

[A1IN] Shadow Dance


The base spell is Wind Walk which provides the projectile dodging property, the ability icon and the targeting function.

Variables
  • Source //Murloc Nightcrawler
  • Level //The level of the Shadow Dance ability
  • ShadowDanceFX //The [h0B1] dummy unit used which provides the visual effects of the active part
  • Duration //The duration of the active part
  • Time //The time of the game
  • DisabledTime //The time during which the Spellbook abilities are removed after being damaged by a neutral unit
  • Counter1 //A counter used to control the addition and the removal of the Spellbook abilities
  • Counter2 //A counter used to control the addition and the removal of the Spellbook abilities
Abilities
  • [A1IN] //Shadow Dance (used by Murloc Nightcrawler)
  • [A1HW] //Permanent Invisibility ability
  • [A1HX] //Permanent Invisibility ability
  • [B0C9] //The buff ID of the Slow Aura (Tornado) abilities
  • [A1IE] //Spellbook ability used for level 1 which has the following abilities:
  1. [A1IC] //Healing Ward Aura ability providing the heal
  2. [A1I8] //Slow Aura (Tornado) ability providing the speed increase
  3. [A1I7] //Ability providng the visual effects of the passive part
  • [A1IF] //Spellbook ability used for level 2 which has the following abilities:
  1. [A1ID] //Healing Ward Aura ability providing the heal
  2. [A1I9] //Slow Aura (Tornado) ability providing the speed increase
  3. [A1I7] //Ability providng the visual effects of the passive part
  • [A1IG] //Spellbook ability used for level 3 which has the following abilities:
  1. [A1IB] //Healing Ward Aura ability providing the heal
  2. [A1IA] //Slow Aura (Tornado) ability providing the speed increase
  3. [A1I7] //Ability providng the visual effects of the passive part
Functions
  • Function 2
    Store the triggering unit as Source
    Set Counter1 to 0
    Set Counter2 to 0
    Create a timer which runs at a 0.1 second interval
    Call Function 3 for each interval
    If [Source was damaged] then
    Call Function 3
    Set the [A1IE] ability to be unavailable to Source
    Set the [A1IF] ability to be unavailable to Source
    Set the [A1IG] ability to be unavailable to Source
  • Function 3
    Store the level of the [A1IN] ability as Level
    Store the current game time as Time
    If [Source is dead] then
    Set Source to null
    If [this function was called because Source was damaged and GetEventDamageSource() is a neutral unit] then
    If [the level of the [A1IE] ability is greater than 0] then
    Remove the [A1IE] ability from Source
    Remove the [B0C9] ability from Source
    If [the level of the [A1IF] ability is greater than 0] then
    Remove the [A1IF] ability from Source
    Remove the [B0C9] ability from Source
    If [the level of the [A1IG] is greater than 0] then
    Remove the [A1IG] ability from Source
    Remove the [B0C9] ability from Source
    Set DisabledTime to Time + 2
    If [DisabledTime > Time] then
    Set Source to null //This is done so that when Slark is damaged by a neutral unit there will be no additional buff addition and removal for 2 seconds. Source is retrieved from the hashtable each time this function is called, so there aren't any unwanted effects either
    If [Source is visible to the enemy or Source has the [BNdo] buff] then
    Set Counter2 to 0
    If [the level of the [A1IE] ability is greater than 0] or [the level of the [A1IF] ability is greater than 0] or [the level of the [A1IG] ability is greater than 0] then
    Set Counter1 to Counter1+0.1
    If [Counter1 > 0.6] then
    Set Counter1 to 0
    If [the level of the [A1IE] ability is greater than 0] then
    Remove the [A1IE] ability from Source
    Remove the [B0C9] ability from Source
    If [the level of the [A1IF] ability is greater than 0] then
    Remove the [A1IF] ability from Source
    Remove the [B0C9] ability from Source
    If [the level of the [A1IG] ability is greater than 0] then
    Remove the [A1IG] ability from Source
    Remove the [B0C9] ability from Source
    If [Source is not visible to the enemy] then
    Set Counter1 to 0
    If [Level = 1 and the level of the [A1IE] ability equals 0] or [Level = 2 and the level of the [A1IF] ability equals 0] or [Level = 3 and the level of the [A1IG] ability equals 0] then
    Set Counter2 to Counter2+0.1
    If [Counter2 > 0.6] then
    Set Counter2 to 0
    If [Level = 1] then
    If [the level of the [A1IE] ability equals 0] then
    Add the [A1IE] ability to Source
    If [Level = 2] then
    If [the level of the [A1IE] ability is greater than 0] then
    Remove the [A1IE] ability from Source
    Remove the [B0C9] ability from Source
    If [the level of the [A1IF] ability equals 0] then
    Add the [A1IF] ability to Source
    If [Level = 3] then
    If [the level of the [A1IE] ability is greater than 0] then
    Remove the [A1IE] ability from Source
    Remove the [B0C9] ability from Source
    If [the level of the [A1IF] ability is greater than 0] then
    Remove the [A1IF] ability from Source
    Remove the [B0C9] ability from Source
    If [the level of the [A1IG] ability equals 0] then
    Add the [A1IG] ability to Source
  • Function 5
    Set Duration to 5.5
    Create a [h0B1] dummy unit for the owner of Source at the position of Source and store it as ShadowDanceFX
    Add the [A1HW] and the [A1HX] abilities to Source for Duration seconds or until Source dies
    Create a timer which runs at a 0.03 second interval
    Call Function 6 for each interval
  • Function 6
    If [TriggerCalls > 5.5/0.03] then
    Kill ShadowDanceFX
    Destroy this trigger
    Else
    Set the X-coordinate of ShadowDanceFX to GetUnitX(Source)
    Set the Y-coordinate of ShadowDanceFX to GetUnitY(Source)
Conditions
  • Condition 1
    If the [A1IN] ability was learned for the first time and the learning unit was not an illusion ...
  • Condition 2
    If the spell which went into effect was [A1IN] ...
Notes
The [h0B1] dummy unit has the following model path: war3mapImported\SmokescreenBlack5
__________________

Rest in peace, David Gold.
  Reply With Quote
Last edited by BBQ; 06-26-2010 at 01:41 AM.
Old 01-14-2010, 11:23 AM   #8
Küken
Member
 
Küken's Avatar
 
Join Date: Jun 2009
Posts: 557
Küken is offline
Default Re: 6.66 triggers

Scorched Earth uses Tornado Damage Aura? So it does not stack with radiance? Interesting.
__________________
when providing mech information, I am usually too lazy to look up and state memorized information.
Might not be 100% correct, maybe you are better off waiting for someone to confirm
  Reply With Quote
Old 01-14-2010, 11:26 AM   #9
BBQ
Member
 
BBQ's Avatar
 
Join Date: Jul 2009
Location: Where the magic is.
Posts: 639
BBQ is offline
Default Re: 6.66 triggers

The IDs are different, so it stacks.
e: By the way, if you haven't noticed, level 1 Scorched Earth provides 10 HP/sec regeneration instead of 15. (stupid tooltip)
__________________

Rest in peace, David Gold.
  Reply With Quote
Last edited by BBQ; 01-14-2010 at 11:28 AM.
Old 01-14-2010, 11:26 AM   #10
GuardiANgel
Member
 
GuardiANgel's Avatar
 
Join Date: Jun 2009
Posts: 236
GuardiANgel is offline
Default Re: 6.66 triggers

Even though I don't know anything about JASS, coding and stuff, ^THIS is easy-moderate to read and easy to understand.

TY and gj.
__________________


Unless I grip the sword, I cannot protect you.
While gripping the sword, I cannot embrace you.
  Reply With Quote
Old 01-14-2010, 01:26 PM   #11
antiweltteilchen
Forum Staff
 
antiweltteilchen's Avatar
 
Join Date: Jun 2009
Location: germany
Posts: 3,252
antiweltteilchen is offline
Default Re: 6.66 triggers

any request from your side?
__________________

My Preciousssss
crdits to Infrisios for avatar :>
  Reply With Quote
Old 01-14-2010, 08:39 PM   #12
myashssi
Member
 
myashssi's Avatar
 
Join Date: Jun 2009
Posts: 190
myashssi is offline
Default Re: 6.66 triggers

What were the changes for Slarks Pounce? Did icefrog just reduce the 1500 distance after which the link would break or anything else?
  Reply With Quote
Old 01-14-2010, 08:48 PM   #13
antiweltteilchen
Forum Staff
 
antiweltteilchen's Avatar
 
Join Date: Jun 2009
Location: germany
Posts: 3,252
antiweltteilchen is offline
Default Re: 6.66 triggers

the 1500 condition was removed and instead the link will be broken if the target moved more than 100 units in 0.03 seconds. more to this will be provided by BBQ soon
__________________

My Preciousssss
crdits to Infrisios for avatar :>
  Reply With Quote
Old 01-15-2010, 07:45 PM   #14
antiweltteilchen
Forum Staff
 
antiweltteilchen's Avatar
 
Join Date: Jun 2009
Location: germany
Posts: 3,252
antiweltteilchen is offline
Default Re: 6.66 triggers

bump for BBQ adding teh murloc triggers. have a look
__________________

My Preciousssss
crdits to Infrisios for avatar :>
  Reply With Quote
Old 06-14-2010, 07:12 PM   #15
Fulvian
Member
 
Fulvian's Avatar
 
Join Date: Oct 2009
Location: Dawn Tavern
Posts: 13
Fulvian is offline
Default Re: 6.66 triggers

Just a little question, about Dark Pact and "[B01Y]-Charge of Darkness Faerie Fire"
Does Dark Pact remove Charge of Darkness only when Spiritbreaker is about to hit Slark (when the buff icon is visible)?
  Reply With Quote
Old 06-15-2010, 12:53 AM   #16
SN0W37
Member
 
SN0W37's Avatar
 
Join Date: Mar 2010
Location: Everywhere \:D/
Posts: 1,379
Blog Entries: 1
SN0W37 is offline
Default Re: 6.66 triggers

Correct, if slark doesnt have the buff at the time dark pact goes into effect, or the buff is added after dark pact goes into effect then it is not removed, same with everyother buff on the list.
__________________
You can call me LEM0NS

( `-') ('-´ )
  Reply With Quote
Reply


Forum Jump

Thread Tools