Moderator
M
Moderator
World's End v.1.0e | Reviewed by Maker | 2nd Jun 2013 | ||||
| APPROVED | ||||
|
|
WE Config

Events


Map initialization

Conditions

Actions


-------- Configuration --------


-------- -------------------------------------------------- --------


-------- How far the flames are summoned from the target: --------


Set WE_Offset[1] = 300.00


Set WE_Offset[2] = 400.00


Set WE_Offset[3] = 500.00


-------- How much the flames damage the target every 0.03 seconds: --------


Set WE_Damage[1] = 10.00


Set WE_Damage[2] = 20.00


Set WE_Damage[3] = 30.00


-------- How long it will take each wave of flames to reach the target: (taken in percent) --------


Set WE_TimeToReach[1] = 0.50


Set WE_TimeToReach[2] = 0.40


Set WE_TimeToReach[3] = 0.20


-------- Waves of flames created: --------


Set WE_Maxloop[1] = 4


Set WE_Maxloop[2] = 5


Set WE_Maxloop[3] = 6


-------- Missiles created with each wave: --------


Set WE_MaxMissiles[1] = 5


Set WE_MaxMissiles[2] = 6


Set WE_MaxMissiles[3] = 7


-------- Should the flames arc whilst moving? --------


Set WE_Arcs[1] = True


Set WE_Arcs[2] = True


Set WE_Arcs[3] = True


-------- Distance of the arcs with each wave: (Formula: MaxLoop * arc_dist = increment between arcs with each wave) --------


Set WE_ArcDist[1] = 75.00


Set WE_ArcDist[2] = 85.00


Set WE_ArcDist[3] = 95.00


-------- Missiles move in a parabolic form: --------


Set WE_ParabolaBoolean[1] = True


Set WE_ParabolaBoolean[2] = True


Set WE_ParabolaBoolean[3] = True


-------- Maximum height missiles reach: --------


Set WE_ParabolaHeight[1] = 200.00


Set WE_ParabolaHeight[2] = 300.00


Set WE_ParabolaHeight[3] = 400.00


-------- The missile's model path: --------


Set WE_MSFX[1] = Abilities\Weapons\PhoenixMissile\Phoenix_Missile.mdl


Set WE_MSFX[2] = Abilities\Weapons\PhoenixMissile\Phoenix_Missile.mdl


Set WE_MSFX[3] = Abilities\Weapons\PhoenixMissile\Phoenix_Missile.mdl


-------- The sfx created on the missile's impact: --------


Set WE_MISFX[1] = Abilities\Spells\Other\Doom\DoomDeath.mdl


Set WE_MISFX[2] = Abilities\Spells\Other\Doom\DoomDeath.mdl


Set WE_MISFX[3] = Abilities\Spells\Other\Doom\DoomDeath.mdl


-------- -------------------------------------------------- --------


-------- End Configuration --------
WE Cast

Events


Unit - A unit Starts the effect of an ability

Conditions


(Ability being cast) Equal to World's End

Actions


Set WE_Caster = (Triggering unit)


Set WE_Target = (Target unit of ability being cast)


Set WE_Level = (Level of World's End for WE_Caster)


Set MS_dmg_source = WE_Caster


Set MS_owner = (Owner of WE_Caster)


Set MS_create_point = (Position of WE_Caster)


Set MS_target_point = (Position of WE_Target)


Set MS_damage = 10.00


Set MS_seconds_to_reach = 0.20


Set MS_angle = (Angle from MS_create_point to MS_target_point)


Set MS_distance = (Distance between MS_create_point and MS_target_point)


Set MS_missile_gfx = WE_MSFX[WE_Level]


Set MS_impact_gfx = WE_MISFX[WE_Level]


Set MS_unit_hit_eff = <Empty String>


Set MS_arcs = False


Set MS_arc_dist = 0.00


Set MS_arc_type = 1


Set MS_parabola = False


Set MS_parabola_height = 0.00


Trigger - Run MS init <gen> (ignoring conditions)


Set WE_TempPoint = (Position of WE_Target)


Unit - Create 1 Dummy/Missile for MS_owner at WE_TempPoint facing Default building facing degrees


Set WE_Dummy = (Last created unit)


Unit - Add War Stomp to WE_Dummy


Unit - Order WE_Dummy to Orc Tauren Chieftain - War Stomp


Unit - Add a 0.80 second Generic expiration timer to WE_Dummy


Unit - Remove War Stomp from WE_Dummy


For each (Integer WE_LoopInt) from 1 to WE_Maxloop[WE_Level], do (Actions)



Loop - Actions




Unit - Order WE_Target to Stop




For each (Integer WE_TempInt) from 1 to WE_MaxMissiles[WE_Level], do (Actions)





Loop - Actions






Set MS_dmg_source = WE_Caster






Set MS_create_point = (WE_TempPoint offset by WE_Offset[WE_Level] towards ((Real(WE_TempInt)) x (360.00 / (Real(WE_MaxMissiles[WE_Level])))) degrees)






Set MS_target_point = WE_TempPoint






Set MS_damage = WE_Damage[WE_Level]






Set MS_seconds_to_reach = ((Real(WE_LoopInt)) x WE_TimeToReach[WE_Level])






Set MS_angle = (Angle from MS_create_point to MS_target_point)






Set MS_distance = (Distance between MS_create_point and MS_target_point)






Set MS_missile_gfx = WE_MSFX[WE_Level]






Set MS_impact_gfx = WE_MISFX[WE_Level]






Set MS_unit_hit_eff = Objects\Spawnmodels\Orc\Orcblood\BattrollBlood.mdl






Set MS_arcs = WE_Arcs[WE_Level]






Set MS_arc_dist = ((Real(WE_LoopInt)) x WE_ArcDist[WE_Level])






Set MS_arc_type = 1






Set MS_parabola = WE_ParabolaBoolean[WE_Level]






Set MS_parabola_height = WE_ParabolaHeight[WE_Level]






Trigger - Run MS init <gen> (ignoring conditions)


Custom script: call RemoveLocation(udg_MS_create_point)


Custom script: call RemoveLocation(udg_MS_target_point)


Custom script: call RemoveLocation(udg_WE_TempPoint)
MS init

Events

Conditions

Actions


If (All Conditions are True) then do (Then Actions) else do (Else Actions)



If - Conditions




MS_index[1] Equal to 0



Then - Actions




Set MS_dyn_index = 0




Trigger - Turn on MS loop <gen>



Else - Actions


Set MS_index[1] = (MS_index[1] + 1)


Set MS_index_selected = False


If (All Conditions are True) then do (Then Actions) else do (Else Actions)



If - Conditions




MS_dyn_index Less than MS_index[2]




MS_dyn_index Not equal to 0




MS_empty_index[MS_dyn_index] Equal to True



Then - Actions




Set MS_index_selected = True



Else - Actions




For each (Integer MS_index[0]) from 1 to MS_index[2], do (Actions)





Loop - Actions






If (All Conditions are True) then do (Then Actions) else do (Else Actions)







If - Conditions








MS_empty_index[MS_index[0]] Equal to True








MS_index_selected Equal to False







Then - Actions








Set MS_dyn_index = MS_index[0]








Set MS_index_selected = True







Else - Actions




If (All Conditions are True) then do (Then Actions) else do (Else Actions)





If - Conditions






MS_index_selected Equal to False





Then - Actions






Set MS_index[2] = (MS_index[2] + 1)






Set MS_dyn_index = MS_index[2]





Else - Actions


Set MS_empty_index[MS_dyn_index] = False


Unit - Create 1 Dummy/Missile for MS_owner at MS_create_point facing MS_angle degrees


Unit - Add Storm Crow Form to (Last created unit)


Unit - Remove Storm Crow Form from (Last created unit)


Unit - Turn collision for (Last created unit) Off


Unit - Move (Last created unit) instantly to MS_create_point


Special Effect - Create a special effect attached to the chest of (Last created unit) using MS_missile_gfx


Set MS_missile_eff[MS_dyn_index] = (Last created special effect)


Set MS_missile[MS_dyn_index] = (Last created unit)


Set MS_dmg_source_ex[MS_dyn_index] = MS_dmg_source


Set MS_distance_max[MS_dyn_index] = MS_distance


Set MS_angle_ex[MS_dyn_index] = MS_angle


Set MS_speed_ex[MS_dyn_index] = ((MS_distance_max[MS_dyn_index] / MS_seconds_to_reach) x 0.03)


Set MS_player_check[MS_dyn_index] = MS_owner


Set MS_damage_ex[MS_dyn_index] = MS_damage


Set MS_arcs_ex[MS_dyn_index] = MS_arcs


Set MS_parabola_ex[MS_dyn_index] = MS_parabola


Set MS_impact_gfx_ex[MS_dyn_index] = MS_impact_gfx


Set MS_unit_hit_eff_ex[MS_dyn_index] = MS_unit_hit_eff


If (All Conditions are True) then do (Then Actions) else do (Else Actions)



If - Conditions




MS_arc_type Equal to 1



Then - Actions




Set MS_arc_core_angle[MS_dyn_index] = (MS_angle_ex[MS_dyn_index] + 90.00)




Set MS_arc_distance_ex[MS_dyn_index] = MS_arc_dist



Else - Actions




Set MS_arc_core_angle[MS_dyn_index] = (MS_angle_ex[MS_dyn_index] - 90.00)




Set MS_arc_distance_ex[MS_dyn_index] = MS_arc_dist


If (All Conditions are True) then do (Then Actions) else do (Else Actions)



If - Conditions




MS_parabola Equal to True



Then - Actions




Set MS_parabola_height_ex[MS_dyn_index] = MS_parabola_height



Else - Actions




Set MS_parabola_height_ex[MS_dyn_index] = (Current flying height of MS_missile[MS_dyn_index])


Set MS_distance_current[MS_dyn_index] = 0.00


Set MS_calc_real[1] = (X of MS_create_point)


Set MS_calc_real[2] = (Y of MS_create_point)


Set MS_calc_real[3] = (X of MS_target_point)


Set MS_calc_real[4] = (Y of MS_target_point)


If (All Conditions are True) then do (Then Actions) else do (Else Actions)



If - Conditions




MS_calc_real[1] Equal to MS_calc_real[3]




MS_calc_real[2] Equal to MS_calc_real[4]



Then - Actions




Set MS_speed_ex[MS_dyn_index] = 10.00




Set MS_distance_max[MS_dyn_index] = MS_speed_ex[MS_dyn_index]



Else - Actions


Set MS_build_point[MS_dyn_index] = (Position of MS_missile[MS_dyn_index])


Set MS_get_X[MS_dyn_index] = (X of MS_build_point[MS_dyn_index])


Set MS_get_Y[MS_dyn_index] = (Y of MS_build_point[MS_dyn_index])


Custom script: call RemoveLocation(udg_MS_build_point[udg_MS_dyn_index])
MS loop

Events


Time - Every 0.03 seconds of game time

Conditions

Actions


For each (Integer MS_index[3]) from 1 to MS_index[2], do (Actions)



Loop - Actions




If (All Conditions are True) then do (Then Actions) else do (Else Actions)





If - Conditions






MS_missile[MS_index[3]] Not equal to No unit





Then - Actions






Set MS_temp_point[0] = (Point(MS_get_X[MS_index[3]], MS_get_Y[MS_index[3]]))






Set MS_temp_point[1] = (Position of MS_missile[MS_index[3]])






Set MS_distance_current[MS_index[3]] = (MS_distance_current[MS_index[3]] + MS_speed_ex[MS_index[3]])






If (All Conditions are True) then do (Then Actions) else do (Else Actions)







If - Conditions








MS_arcs_ex[MS_index[3]] Equal to True







Then - Actions








Set MS_calc_real[1] = MS_arc_distance_ex[MS_index[3]]








Set MS_calc_real[2] = MS_distance_max[MS_index[3]]








Set MS_calc_real[3] = MS_distance_current[MS_index[3]]








Custom script: set udg_MS_calc_real[4] = ( 4 * udg_MS_calc_real[1] / udg_MS_calc_real[2] ) * ( udg_MS_calc_real[2] - udg_MS_calc_real[3] ) * ( udg_MS_calc_real[3] / udg_MS_calc_real[2] )








Set MS_temp_point[2] = (MS_temp_point[0] offset by MS_speed_ex[MS_index[3]] towards MS_angle_ex[MS_index[3]] degrees)








Set MS_temp_point[3] = (MS_temp_point[2] offset by MS_calc_real[4] towards MS_arc_core_angle[MS_index[3]] degrees)








Set MS_calc_real[5] = (Angle from MS_temp_point[1] to MS_temp_point[3])








Unit - Move MS_missile[MS_index[3]] instantly to MS_temp_point[3], facing MS_calc_real[5] degrees








Set MS_build_point[MS_index[3]] = (MS_temp_point[0] offset by MS_speed_ex[MS_index[3]] towards MS_angle_ex[MS_index[3]] degrees)








Set MS_get_X[MS_index[3]] = (X of MS_build_point[MS_index[3]])








Set MS_get_Y[MS_index[3]] = (Y of MS_build_point[MS_index[3]])








Custom script: call RemoveLocation(udg_MS_temp_point[2])








Custom script: call RemoveLocation(udg_MS_temp_point[3])








Custom script: call RemoveLocation(udg_MS_build_point[udg_MS_index[3]])







Else - Actions








Set MS_temp_point[2] = (MS_temp_point[1] offset by MS_speed_ex[MS_index[3]] towards MS_angle_ex[MS_index[3]] degrees)








Unit - Move MS_missile[MS_index[3]] instantly to MS_temp_point[2], facing MS_angle_ex[MS_index[3]] degrees








Custom script: call RemoveLocation(udg_MS_temp_point[2])






If (All Conditions are True) then do (Then Actions) else do (Else Actions)







If - Conditions








MS_parabola_ex[MS_index[3]] Equal to True







Then - Actions








Set MS_calc_real[1] = MS_parabola_height_ex[MS_index[3]]








Set MS_calc_real[2] = MS_distance_max[MS_index[3]]








Set MS_calc_real[3] = MS_distance_current[MS_index[3]]








Custom script: set udg_MS_calc_real[4] = ( 4 * udg_MS_calc_real[1] / udg_MS_calc_real[2] ) * ( udg_MS_calc_real[2] - udg_MS_calc_real[3] ) * ( udg_MS_calc_real[3] / udg_MS_calc_real[2] )








Animation - Change MS_missile[MS_index[3]] flying height to MS_calc_real[4] at 0.00







Else - Actions






Set MS_temp_point[4] = (Position of MS_missile[MS_index[3]])






Custom script: if udg_MS_temp_group[udg_MS_index[3]] == null then






Custom script: set udg_MS_temp_group[udg_MS_index[3]] = CreateGroup()






Custom script: endif






Set MS_temp_group[MS_index[3]] = (Units within 85.00 of MS_temp_point[4] matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of MS_player_






Unit Group - Pick every unit in MS_temp_group[MS_index[3]] and do (Actions)







Loop - Actions








If (All Conditions are True) then do (Then Actions) else do (Else Actions)









If - Conditions










((Current flying height of MS_missile[MS_index[3]]) - (Current flying height of (Picked unit))) Less than 35.00










((Current flying height of MS_missile[MS_index[3]]) - (Current flying height of (Picked unit))) Greater than -35.00









Then - Actions










Unit - Cause MS_dmg_source_ex[MS_index[3]] to damage (Picked unit), dealing MS_damage_ex[MS_index[3]] damage of attack type Spells and damage type Normal










Special Effect - Create a special effect attached to the chest of (Picked unit) using MS_unit_hit_eff_ex[MS_index[3]]










Special Effect - Destroy (Last created special effect)









Else - Actions






If (All Conditions are True) then do (Then Actions) else do (Else Actions)







If - Conditions








MS_distance_current[MS_index[3]] Greater than or equal to MS_distance_max[MS_index[3]]







Then - Actions








Special Effect - Destroy MS_missile_eff[MS_index[3]]








Special Effect - Create a special effect at MS_temp_point[4] using MS_impact_gfx_ex[MS_index[3]]








Special Effect - Destroy (Last created special effect)








Unit - Remove MS_missile[MS_index[3]] from the game








Custom script: set udg_MS_missile[udg_MS_index[3]] = null








Set MS_index[1] = (MS_index[1] - 1)








Set MS_empty_index[MS_index[3]] = True








If (All Conditions are True) then do (Then Actions) else do (Else Actions)









If - Conditions










MS_index_selected Equal to False









Then - Actions










Set MS_dyn_index = MS_index[3]










Set MS_index_selected = True









Else - Actions








If (All Conditions are True) then do (Then Actions) else do (Else Actions)









If - Conditions










MS_index[3] Equal to MS_index[2]










MS_index[1] Not equal to 0









Then - Actions










Set MS_index[2] = (MS_index[2] - 1)









Else - Actions







Else - Actions






Custom script: call DestroyGroup(udg_MS_temp_group[udg_MS_index[3]])






Custom script: set udg_MS_temp_group[udg_MS_index[3]] = null






Custom script: call RemoveLocation(udg_MS_temp_point[0])






Custom script: call RemoveLocation(udg_MS_temp_point[1])






Custom script: call RemoveLocation(udg_MS_temp_point[4])





Else - Actions






If (All Conditions are True) then do (Then Actions) else do (Else Actions)







If - Conditions








MS_index[3] Equal to MS_index[2]








MS_index[1] Not equal to 0







Then - Actions








Set MS_index[2] = (MS_index[2] - 1)







Else - Actions


If (All Conditions are True) then do (Then Actions) else do (Else Actions)



If - Conditions




MS_index[1] Equal to 0



Then - Actions




Set MS_index[2] = 0




Set MS_dyn_index = 0




Trigger - Turn off (This trigger)



Else - Actions