Rheiko
Spell Reviewer
- Joined
- Aug 27, 2013
- Messages
- 4,121
Hi guys,
i'm trying to make this spell for Gimli_2 but i forgot to index the lightning
so when i change the lightning variable into an array, still nothing bad happens
when i change the custom script from
into
World Editor Crash
maybe you can help me fixing it with your WE cuz maybe my laptop is the problem, i don't know the reason either
and also if you want the full trigger, here it is
[highlight]Note: This Trigger isn't completed yet, if i did something wrong feel free to tell me[/code]
and here's the test map
Lightning Hook
i'm trying to make this spell for Gimli_2 but i forgot to index the lightning
so when i change the lightning variable into an array, still nothing bad happens
when i change the custom script from
JASS:
set udg_LH_Lightning = AddLightningEx(udg_LH_Lightning_Type, true , GetLocationX(udg_TempPoint3), GetLocationY(udg_TempPoint3), GetLocationZ(udg_TempPoint3) + 70, GetLocationX(udg_TempPoint3), GetLocationY(udg_TempPoint3), GetLocationZ(udg_TempPoint3) + 70)
JASS:
set udg_LH_Lightning[udg_LH_Max_Index] = AddLightningEx(udg_LH_Lightning_Type, true , GetLocationX(udg_TempPoint3), GetLocationY(udg_TempPoint3), GetLocationZ(udg_TempPoint3) + 70, GetLocationX(udg_TempPoint3), GetLocationY(udg_TempPoint3), GetLocationZ(udg_TempPoint3) + 70)
maybe you can help me fixing it with your WE cuz maybe my laptop is the problem, i don't know the reason either
and also if you want the full trigger, here it is
[highlight]Note: This Trigger isn't completed yet, if i did something wrong feel free to tell me[/code]
-
Configuration
-
Events
- Map initialization
- Conditions
-
Actions
- -------- ---------------------------------------------- --------
- -------- GENERAL CONFIGURATION --------
- -------- ---------------------------------------------- --------
- -------- Store your ability here --------
- Set LH_Ability_ID = Lightning Hook
- -------- Store your dummy here --------
- Set LH_Dummy_Type = Hook
- -------- Your Ability Damage --------
- Set LH_Damage[1] = 150.00
- Set LH_Damage[2] = 225.00
- Set LH_Damage[3] = 300.00
- -------- Your Ability Damage Type --------
- Set LH_DamageType = Lightning
- -------- Your Ability Attack Type --------
- Set LH_AttackType = Spells
- -------- Your lightning type --------
- Set LH_Lightning_Type = Chain Lightning - Primary
- -------- Your lightning color (RGB) --------
- Set LH_Lightning_Red = 100.00
- Set LH_Lightning_Green = 100.00
- Set LH_Lightning_Blue = 100.00
- -------- Your missile speed --------
- Set LH_Missile_Speed = 1500.00
- -------- Area of Effect --------
- Set LH_AoE = 150.00
- -------- Where the hook spawn at? --------
- Set LH_Start_Range = 100.00
- Set LH_Special_Effect =
- -------- You want to Destroy Tree? If yes, "True". If no, "False" --------
- Set LH_DestroyTree = True
- -------- ---------------------------------------------------------- --------
- -------- CONDITION CONFIGURATION --------
- -------- ---------------------------------------------------------- --------
- -------- Belongs to an Ally --------
- Set LH_Condition[1] = False
- -------- Belongs to an Enemy --------
- Set LH_Condition[2] = True
- -------- Structure --------
- Set LH_Condition[3] = False
- -------- Magic Immune --------
- Set LH_Condition[4] = False
- -------- Alive --------
- Set LH_Condition[5] = True
- -------- Unit is in UnDamage Group (to prevent damage looping) --------
- Set LH_Condition[6] = False
- -------- ---------------------------------------------------------- --------
- -------- END OF CONFIGURATION --------
- -------- ---------------------------------------------------------- --------
- -------- DO NOT CHANGE THIS --------
- -------- ---------------------------------------------------------- --------
- Set TempPoint = (Center of (Playable map area))
- Unit - Create 1 Peasant for Neutral Passive at TempPoint facing Default building facing degrees
- Custom script: call RemoveLocation(udg_TempPoint)
- Set LH_TreeDestroyer = (Last created unit)
- Unit - Hide LH_TreeDestroyer
- -------- ---------------------------------------------------------- --------
- -------- ---------------------------------------------------------- --------
-
Events
-
Lightning Hook
-
Events
- Unit - A unit Starts the effect of an ability
-
Conditions
- (Ability being cast) Equal to LH_Ability_ID
-
Actions
- Set LH_Max_Index = (LH_Max_Index + 1)
- Set LH_Owner[LH_Max_Index] = (Triggering player)
- Set LH_Caster[LH_Max_Index] = (Triggering unit)
- Set LH_Target[LH_Max_Index] = (Target unit of ability being cast)
- Set LH_Ability_Level[LH_Max_Index] = (Level of LH_Ability_ID for LH_Caster[LH_Max_Index])
- Set TempPoint = (Position of LH_Caster[LH_Max_Index])
- Set TempPoint2 = (Position of LH_Target[LH_Max_Index])
- Set LH_Angle[LH_Max_Index] = (Angle from TempPoint to TempPoint2)
- Set TempPoint3 = (TempPoint offset by LH_Start_Range towards LH_Angle[LH_Max_Index] degrees)
- Unit - Create 1 LH_Dummy_Type for LH_Owner[LH_Max_Index] at TempPoint3 facing LH_Angle[LH_Max_Index] degrees
- Set LH_Dummy[LH_Max_Index] = (Last created unit)
- Custom script: set udg_LH_Lightning = AddLightningEx(udg_LH_Lightning_Type, true , GetLocationX(udg_TempPoint3), GetLocationY(udg_TempPoint3), GetLocationZ(udg_TempPoint3) + 70, GetLocationX(udg_TempPoint3), GetLocationY(udg_TempPoint3), GetLocationZ(udg_TempPoint3) + 70)
- Set LH_Stage[LH_Max_Index] = 1
- Custom script: set udg_LH_UnDamage_Group[udg_LH_Max_Index] = CreateGroup()
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- LH_Max_Index Equal to 1
-
Then - Actions
- Trigger - Turn on Loop <gen>
- Else - Actions
-
If - Conditions
- Custom script: call RemoveLocation(udg_TempPoint)
- Custom script: call RemoveLocation(udg_TempPoint2)
- Custom script: call RemoveLocation(udg_TempPoint3)
-
Events
-
Loop
-
Events
- Time - Every 0.03 seconds of game time
- Conditions
-
Actions
-
For each (Integer LH_Current_Index) from 1 to LH_Max_Index, do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- LH_Stage[LH_Current_Index] Equal to 1
-
Then - Actions
- Set TempPoint = (Position of LH_Caster[LH_Current_Index])
- Set TempPoint2 = (Position of LH_Dummy[LH_Current_Index])
- Set TempPoint3 = (Position of LH_Target[LH_Current_Index])
- Set LH_Angle[LH_Current_Index] = (Angle from TempPoint2 to TempPoint3)
- Set TempPoint4 = (TempPoint2 offset by (LH_Missile_Speed x 0.03) towards LH_Angle[LH_Current_Index] degrees)
- Unit - Move LH_Dummy[LH_Current_Index] instantly to TempPoint4
- Custom script: call MoveLightningEx(udg_LH_Lightning, true , GetLocationX(udg_TempPoint), GetLocationY(udg_TempPoint), GetLocationZ(udg_TempPoint) + 70, GetLocationX(udg_TempPoint2), GetLocationY(udg_TempPoint2), GetLocationZ(udg_TempPoint2) + 70)
- Set LH_Damage_Group = (Units within LH_AoE of TempPoint2)
-
Unit Group - Pick every unit in LH_Damage_Group and do (Actions)
-
Loop - Actions
- Set TempUnit = (Picked unit)
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (TempUnit belongs to an ally of LH_Owner[LH_Current_Index]) Equal to LH_Condition[1]
- (TempUnit belongs to an enemy of LH_Owner[LH_Current_Index]) Equal to LH_Condition[2]
- (TempUnit is A structure) Equal to LH_Condition[3]
- (TempUnit is Magic Immune) Equal to LH_Condition[4]
- (TempUnit is alive) Equal to LH_Condition[5]
- (TempUnit is in LH_UnDamage_Group[LH_Current_Index]) Equal to LH_Condition[6]
-
Then - Actions
- Unit - Cause LH_Caster[LH_Current_Index] to damage TempUnit, dealing LH_Damage[LH_Ability_Level[LH_Current_Index]] damage of attack type LH_AttackType and damage type LH_DamageType
- Unit Group - Add TempUnit to LH_UnDamage_Group[LH_Current_Index]
- Else - Actions
-
If - Conditions
-
Loop - Actions
- Custom script: call DestroyGroup(udg_LH_Damage_Group)
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- LH_DestroyTree Equal to True
-
Then - Actions
-
Destructible - Pick every destructible within LH_AoE of TempPoint2 and do (Actions)
-
Loop - Actions
- Set TempDest = (Picked destructible)
- Unit - Order LH_TreeDestroyer to Harvest TempDest
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Current order of LH_TreeDestroyer) Equal to (Order(harvest))
-
Then - Actions
- Destructible - Kill TempDest
- Else - Actions
-
If - Conditions
- Unit - Order LH_TreeDestroyer to Stop
-
Loop - Actions
-
Destructible - Pick every destructible within LH_AoE of TempPoint2 and do (Actions)
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Distance between TempPoint2 and TempPoint3) Less than or equal to 100.00
-
Then - Actions
- Set LH_Stage[LH_Current_Index] = 2
- Custom script: call DestroyGroup(udg_LH_UnDamage_Group[udg_LH_Current_Index])
- Custom script: set udg_LH_UnDamage_Group[udg_LH_Current_Index] = CreateGroup()
- Else - Actions
-
If - Conditions
- Custom script: call RemoveLocation(udg_TempPoint)
- Custom script: call RemoveLocation(udg_TempPoint2)
- Custom script: call RemoveLocation(udg_TempPoint3)
- Custom script: call RemoveLocation(udg_TempPoint4)
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- LH_Stage[LH_Current_Index] Equal to 2
-
Then - Actions
- Set TempPoint = (Position of LH_Caster[LH_Current_Index])
- Set TempPoint2 = (Position of LH_Dummy[LH_Current_Index])
- Set TempPoint3 = (Position of LH_Target[LH_Current_Index])
- Set LH_Angle[LH_Current_Index] = (Angle from TempPoint3 to TempPoint)
- Set TempPoint4 = (TempPoint2 offset by (LH_Missile_Speed x 0.03) towards LH_Angle[LH_Current_Index] degrees)
- Unit - Move LH_Dummy[LH_Current_Index] instantly to TempPoint4
- Unit - Move LH_Target[LH_Current_Index] instantly to TempPoint2
- Custom script: call MoveLightningEx(udg_LH_Lightning, true , GetLocationX(udg_TempPoint), GetLocationY(udg_TempPoint), GetLocationZ(udg_TempPoint) + 70, GetLocationX(udg_TempPoint2), GetLocationY(udg_TempPoint2), GetLocationZ(udg_TempPoint2) + 70)
- Set LH_Damage_Group = (Units within LH_AoE of TempPoint2)
-
Unit Group - Pick every unit in LH_Damage_Group and do (Actions)
-
Loop - Actions
- Set TempUnit = (Picked unit)
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (TempUnit belongs to an ally of LH_Owner[LH_Current_Index]) Equal to LH_Condition[1]
- (TempUnit belongs to an enemy of LH_Owner[LH_Current_Index]) Equal to LH_Condition[2]
- (TempUnit is A structure) Equal to LH_Condition[3]
- (TempUnit is Magic Immune) Equal to LH_Condition[4]
- (TempUnit is alive) Equal to LH_Condition[5]
- (TempUnit is in LH_UnDamage_Group[LH_Current_Index]) Equal to LH_Condition[6]
-
Then - Actions
- Unit - Cause LH_Caster[LH_Current_Index] to damage TempUnit, dealing LH_Damage[LH_Ability_Level[LH_Current_Index]] damage of attack type LH_AttackType and damage type LH_DamageType
- Unit Group - Add TempUnit to LH_UnDamage_Group[LH_Current_Index]
- Else - Actions
-
If - Conditions
-
Loop - Actions
- Custom script: call DestroyGroup(udg_LH_Damage_Group)
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- LH_DestroyTree Equal to True
-
Then - Actions
-
Destructible - Pick every destructible within LH_AoE of TempPoint2 and do (Actions)
-
Loop - Actions
- Set TempDest = (Picked destructible)
- Unit - Order LH_TreeDestroyer to Harvest TempDest
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Current order of LH_TreeDestroyer) Equal to (Order(harvest))
-
Then - Actions
- Destructible - Kill TempDest
- Else - Actions
-
If - Conditions
- Unit - Order LH_TreeDestroyer to Stop
-
Loop - Actions
-
Destructible - Pick every destructible within LH_AoE of TempPoint2 and do (Actions)
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Distance between TempPoint2 and TempPoint) Less than or equal to 100.00
-
Then - Actions
- Custom script: call DestroyGroup(udg_LH_UnDamage_Group[udg_LH_Current_Index])
- Custom script: set udg_LH_UnDamage_Group[udg_LH_Current_Index] = CreateGroup()
- Lightning - Destroy LH_Lightning
- Unit - Remove LH_Dummy[LH_Current_Index] from the game
- Set LH_Ability_Level[LH_Current_Index] = LH_Ability_Level[LH_Max_Index]
- Set LH_Ability_Level[LH_Max_Index] = 0
- Set LH_Angle[LH_Current_Index] = LH_Angle[LH_Max_Index]
- Set LH_Angle[LH_Max_Index] = 0.00
- Set LH_Caster[LH_Current_Index] = LH_Caster[LH_Max_Index]
- Set LH_Caster[LH_Max_Index] = No unit
- Set LH_Dummy[LH_Current_Index] = LH_Dummy[LH_Max_Index]
- Set LH_Dummy[LH_Max_Index] = No unit
- Set LH_Target[LH_Current_Index] = LH_Target[LH_Max_Index]
- Set LH_Target[LH_Max_Index] = No unit
- Set LH_Current_Index = (LH_Current_Index - 1)
- Set LH_Max_Index = (LH_Max_Index - 1)
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- LH_Max_Index Equal to 0
-
Then - Actions
- Trigger - Turn off (This trigger)
- Else - Actions
-
If - Conditions
- Else - Actions
-
If - Conditions
- Custom script: call RemoveLocation(udg_TempPoint)
- Custom script: call RemoveLocation(udg_TempPoint2)
- Custom script: call RemoveLocation(udg_TempPoint3)
- Custom script: call RemoveLocation(udg_TempPoint4)
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
Loop - Actions
-
For each (Integer LH_Current_Index) from 1 to LH_Max_Index, do (Actions)
-
Events
Lightning Hook