• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

Spell locating error

Status
Not open for further replies.
Level 4
Joined
Jul 3, 2005
Messages
100
I am making an Tiberium shooting orbital cannon , for the contest , and i have some issues with targeting . I cant figure what's wrong with it , can someone help me please :3 ? I just need to figure out what's wrong , no more .

I cant post the script because i got italian WE , so you won't understand the script ; but if you want it's here . Pretty big , uh ?

  • Tiberium Orbital Cannon
    • Eventi
      • UnitÃ* - A unit Inizia il lancio di un'abilitÃ*
    • Condizioni
      • (Ability being cast) Uguale a Orbital Cannon
    • Azioni
      • UnitÃ* - Create 1 Beacon for (Owner of (Casting unit)) at (Target point of ability being cast) facing Orientamento predefinito degli edifici degrees
      • Effetto speciale - Create a special effect at (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]) using Abilities\Spells\Human\MassTeleport\MassTeleportCaster.mdl
      • Conto alla rovescia - Create a timer window for ZK_DropTimer[(Player number of (Owner of (Casting unit)))] with title Tiberium bombing in...
      • Set ZK_DropBoard[(Player number of (Owner of (Casting unit)))] = (Last created timer window)
      • Conto alla rovescia - Mostra ZK_DropBoard[(Player number of (Owner of (Casting unit)))] for (Owner of (Casting unit))
      • Conto alla rovescia - Start ZK_DropTimer[(Player number of (Owner of (Casting unit)))] as a Una volta timer that will expire in 11.00 seconds
      • Wait until ((Remaining time for ZK_DropTimer[(Player number of (Owner of (Casting unit)))]) Minore o uguale a 1.00), checking every 0.25 seconds
      • Conto alla rovescia - Nascondi ZK_DropBoard[(Player number of (Owner of (Casting unit)))] for (Owner of (Casting unit))
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • Se - Condizioni
          • (Level of (Ability being cast) for (Casting unit)) Uguale a 1
        • Allora - Azioni
          • UnitÃ* - Create 1 L4zor for (Owner of (Casting unit)) at ((Target point of ability being cast) offset by (Random real number between 0.00 and 500.00) towards (Random angle) degrees) facing Orientamento predefinito degli edifici degrees
          • Set ZK_DropL4zor[(Player number of (Owner of (Casting unit)))] = (Last created unit)
          • Animazione - Play ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]'s birth animation
          • Conto alla rovescia - Start ZK_DropTimer[(Player number of (Owner of (Casting unit)))] as a Una volta timer that will expire in 1.00 seconds
          • Wait until ((Remaining time for ZK_DropTimer[(Player number of (Owner of (Casting unit)))]) Minore o uguale a 0.30), checking every 0.25 seconds
          • Gruppo di unitÃ* - Pick every unit in (Units within (Random real number between 300.00 and 500.00) of (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))])) and do (Actions)
            • Giro - Azioni
              • UnitÃ* - Cause (Triggering unit) to damage (Picked unit), dealing ((Random real number between 400.00 and 800.00) - ((Distance between (Position of (Picked unit)) and (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))])) / 1.00)) damage of attack type Assedio and damage type Fuoco
          • Ambiente - Crea Blight for (Owner of (Casting unit)) from (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]) to a radius of 400.00
          • Ambiente - Create a 1.00 second Normale ripple deformation at (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]) with starting radius 0.00, ending radius 800.00, and depth 64.00, using 1.00 second ripples spaced 15.00 apart
          • UnitÃ* - Create 1 Tiberium for Neutrale-passivo at (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]) facing Orientamento predefinito degli edifici degrees
          • UnitÃ* - Kill ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]
          • Conto alla rovescia - Start ZK_DropTimer[(Player number of (Owner of (Casting unit)))] as a Una volta timer that will expire in 1.00 seconds
          • Wait until ((Remaining time for ZK_DropTimer[(Player number of (Owner of (Casting unit)))]) Minore o uguale a 0.30), checking every 0.25 seconds
          • UnitÃ* - Create 1 L4zor for (Owner of (Casting unit)) at ((Target point of ability being cast) offset by (Random real number between 0.00 and 500.00) towards (Random angle) degrees) facing Orientamento predefinito degli edifici degrees
          • Set ZK_DropL4zor[(Player number of (Owner of (Casting unit)))] = (Last created unit)
          • Animazione - Play ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]'s birth animation
          • Conto alla rovescia - Start ZK_DropTimer[(Player number of (Owner of (Casting unit)))] as a Una volta timer that will expire in 1.00 seconds
          • Wait until ((Remaining time for ZK_DropTimer[(Player number of (Owner of (Casting unit)))]) Minore o uguale a 0.30), checking every 0.25 seconds
          • Gruppo di unitÃ* - Pick every unit in (Units within (Random real number between 300.00 and 500.00) of (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))])) and do (Actions)
            • Giro - Azioni
              • UnitÃ* - Cause (Triggering unit) to damage (Picked unit), dealing ((Random real number between 400.00 and 800.00) - ((Distance between (Position of (Picked unit)) and (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))])) / 1.00)) damage of attack type Assedio and damage type Fuoco
          • Ambiente - Crea Blight for (Owner of (Casting unit)) from (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]) to a radius of 400.00
          • Ambiente - Create a 1.00 second Normale ripple deformation at (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]) with starting radius 0.00, ending radius 800.00, and depth 64.00, using 1.00 second ripples spaced 15.00 apart
          • UnitÃ* - Create 1 Tiberium for Neutrale-passivo at (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]) facing Orientamento predefinito degli edifici degrees
          • UnitÃ* - Kill ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]
          • Conto alla rovescia - Start ZK_DropTimer[(Player number of (Owner of (Casting unit)))] as a Una volta timer that will expire in 1.00 seconds
          • Wait until ((Remaining time for ZK_DropTimer[(Player number of (Owner of (Casting unit)))]) Minore o uguale a 0.30), checking every 0.25 seconds
          • UnitÃ* - Create 1 L4zor for (Owner of (Casting unit)) at ((Target point of ability being cast) offset by (Random real number between 0.00 and 500.00) towards (Random angle) degrees) facing Orientamento predefinito degli edifici degrees
          • Set ZK_DropL4zor[(Player number of (Owner of (Casting unit)))] = (Last created unit)
          • Animazione - Play ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]'s birth animation
          • Conto alla rovescia - Start ZK_DropTimer[(Player number of (Owner of (Casting unit)))] as a Una volta timer that will expire in 1.00 seconds
          • Wait until ((Remaining time for ZK_DropTimer[(Player number of (Owner of (Casting unit)))]) Minore o uguale a 0.30), checking every 0.25 seconds
          • Gruppo di unitÃ* - Pick every unit in (Units within (Random real number between 300.00 and 500.00) of (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))])) and do (Actions)
            • Giro - Azioni
              • UnitÃ* - Cause (Triggering unit) to damage (Picked unit), dealing ((Random real number between 400.00 and 800.00) - ((Distance between (Position of (Picked unit)) and (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))])) / 1.00)) damage of attack type Assedio and damage type Fuoco
          • Ambiente - Crea Blight for (Owner of (Casting unit)) from (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]) to a radius of 400.00
          • Ambiente - Create a 1.00 second Normale ripple deformation at (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]) with starting radius 0.00, ending radius 800.00, and depth 64.00, using 1.00 second ripples spaced 15.00 apart
          • UnitÃ* - Create 1 Tiberium for Neutrale-passivo at (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]) facing Orientamento predefinito degli edifici degrees
          • UnitÃ* - Kill ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]
          • Conto alla rovescia - Start ZK_DropTimer[(Player number of (Owner of (Casting unit)))] as a Una volta timer that will expire in 1.00 seconds
          • Wait until ((Remaining time for ZK_DropTimer[(Player number of (Owner of (Casting unit)))]) Minore o uguale a 0.30), checking every 0.25 seconds
          • UnitÃ* - Create 1 L4zor for (Owner of (Casting unit)) at ((Target point of ability being cast) offset by (Random real number between 0.00 and 500.00) towards (Random angle) degrees) facing Orientamento predefinito degli edifici degrees
          • Set ZK_DropL4zor[(Player number of (Owner of (Casting unit)))] = (Last created unit)
          • Animazione - Play ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]'s birth animation
          • Conto alla rovescia - Start ZK_DropTimer[(Player number of (Owner of (Casting unit)))] as a Una volta timer that will expire in 1.00 seconds
          • Wait until ((Remaining time for ZK_DropTimer[(Player number of (Owner of (Casting unit)))]) Minore o uguale a 0.30), checking every 0.25 seconds
          • Gruppo di unitÃ* - Pick every unit in (Units within (Random real number between 300.00 and 500.00) of (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))])) and do (Actions)
            • Giro - Azioni
              • UnitÃ* - Cause (Triggering unit) to damage (Picked unit), dealing ((Random real number between 400.00 and 800.00) - ((Distance between (Position of (Picked unit)) and (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))])) / 1.00)) damage of attack type Assedio and damage type Fuoco
          • Ambiente - Crea Blight for (Owner of (Casting unit)) from (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]) to a radius of 400.00
          • Ambiente - Create a 1.00 second Normale ripple deformation at (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]) with starting radius 0.00, ending radius 800.00, and depth 64.00, using 1.00 second ripples spaced 15.00 apart
          • UnitÃ* - Kill ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]
          • UnitÃ* - Create 1 Tiberium for Neutrale-passivo at (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]) facing Orientamento predefinito degli edifici degrees
        • Altrimenti - Azioni
          • Do nothing
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • Se - Condizioni
          • (Level of (Ability being cast) for (Casting unit)) Uguale a 2
        • Allora - Azioni
          • UnitÃ* - Create 1 L4zor 2 for (Owner of (Casting unit)) at ((Target point of ability being cast) offset by (Random real number between 0.00 and 500.00) towards (Random angle) degrees) facing Orientamento predefinito degli edifici degrees
          • Set ZK_DropL4zor[(Player number of (Owner of (Casting unit)))] = (Last created unit)
          • Animazione - Play ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]'s birth animation
          • Conto alla rovescia - Start ZK_DropTimer[(Player number of (Owner of (Casting unit)))] as a Una volta timer that will expire in 1.00 seconds
          • Wait until ((Remaining time for ZK_DropTimer[(Player number of (Owner of (Casting unit)))]) Minore o uguale a 0.30), checking every 0.25 seconds
          • Gruppo di unitÃ* - Pick every unit in (Units within (Random real number between 300.00 and 500.00) of (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))])) and do (Actions)
            • Giro - Azioni
              • UnitÃ* - Cause (Triggering unit) to damage (Picked unit), dealing ((Random real number between 500.00 and 900.00) - ((Distance between (Position of (Picked unit)) and (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))])) / 1.00)) damage of attack type Assedio and damage type Fuoco
          • UnitÃ* - Create 1 Blue Tiberium for Neutrale-passivo at (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]) facing Orientamento predefinito degli edifici degrees
          • UnitÃ* - Kill ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]
          • Conto alla rovescia - Start ZK_DropTimer[(Player number of (Owner of (Casting unit)))] as a Una volta timer that will expire in 1.00 seconds
          • Wait until ((Remaining time for ZK_DropTimer[(Player number of (Owner of (Casting unit)))]) Minore o uguale a 0.30), checking every 0.25 seconds
          • Ambiente - Crea Blight for (Owner of (Casting unit)) from (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]) to a radius of 400.00
          • Ambiente - Create a 4.00 second Scoraggiamento ripple deformation at (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]) with starting radius 0.00, ending radius 900.00, and depth 90.00, using 1.00 second ripples spaced 15.00 apart
          • UnitÃ* - Create 1 L4zor 2 for (Owner of (Casting unit)) at ((Target point of ability being cast) offset by (Random real number between 0.00 and 500.00) towards (Random angle) degrees) facing Orientamento predefinito degli edifici degrees
          • Set ZK_DropL4zor[(Player number of (Owner of (Casting unit)))] = (Last created unit)
          • Animazione - Play ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]'s birth animation
          • Conto alla rovescia - Start ZK_DropTimer[(Player number of (Owner of (Casting unit)))] as a Una volta timer that will expire in 1.00 seconds
          • Wait until ((Remaining time for ZK_DropTimer[(Player number of (Owner of (Casting unit)))]) Minore o uguale a 0.30), checking every 0.25 seconds
          • Gruppo di unitÃ* - Pick every unit in (Units within (Random real number between 300.00 and 500.00) of (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))])) and do (Actions)
            • Giro - Azioni
              • UnitÃ* - Cause (Triggering unit) to damage (Picked unit), dealing ((Random real number between 500.00 and 900.00) - ((Distance between (Position of (Picked unit)) and (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))])) / 1.00)) damage of attack type Assedio and damage type Fuoco
          • UnitÃ* - Create 1 Blue Tiberium for Neutrale-passivo at (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]) facing Orientamento predefinito degli edifici degrees
          • UnitÃ* - Kill ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]
          • Conto alla rovescia - Start ZK_DropTimer[(Player number of (Owner of (Casting unit)))] as a Una volta timer that will expire in 1.00 seconds
          • Wait until ((Remaining time for ZK_DropTimer[(Player number of (Owner of (Casting unit)))]) Minore o uguale a 0.30), checking every 0.25 seconds
          • Ambiente - Crea Blight for (Owner of (Casting unit)) from (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]) to a radius of 400.00
          • Ambiente - Create a 4.00 second Scoraggiamento ripple deformation at (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]) with starting radius 0.00, ending radius 900.00, and depth 90.00, using 1.00 second ripples spaced 15.00 apart
          • UnitÃ* - Create 1 L4zor 2 for (Owner of (Casting unit)) at ((Target point of ability being cast) offset by (Random real number between 0.00 and 500.00) towards (Random angle) degrees) facing Orientamento predefinito degli edifici degrees
          • Set ZK_DropL4zor[(Player number of (Owner of (Casting unit)))] = (Last created unit)
          • Animazione - Play ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]'s birth animation
          • Conto alla rovescia - Start ZK_DropTimer[(Player number of (Owner of (Casting unit)))] as a Una volta timer that will expire in 1.00 seconds
          • Wait until ((Remaining time for ZK_DropTimer[(Player number of (Owner of (Casting unit)))]) Minore o uguale a 0.30), checking every 0.25 seconds
          • Gruppo di unitÃ* - Pick every unit in (Units within (Random real number between 300.00 and 500.00) of (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))])) and do (Actions)
            • Giro - Azioni
              • UnitÃ* - Cause (Triggering unit) to damage (Picked unit), dealing ((Random real number between 500.00 and 900.00) - ((Distance between (Position of (Picked unit)) and (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))])) / 1.00)) damage of attack type Assedio and damage type Fuoco
          • UnitÃ* - Create 1 Blue Tiberium for Neutrale-passivo at (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]) facing Orientamento predefinito degli edifici degrees
          • UnitÃ* - Kill ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]
          • Conto alla rovescia - Start ZK_DropTimer[(Player number of (Owner of (Casting unit)))] as a Una volta timer that will expire in 1.00 seconds
          • Wait until ((Remaining time for ZK_DropTimer[(Player number of (Owner of (Casting unit)))]) Minore o uguale a 0.30), checking every 0.25 seconds
          • Ambiente - Crea Blight for (Owner of (Casting unit)) from (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]) to a radius of 400.00
          • Ambiente - Create a 4.00 second Scoraggiamento ripple deformation at (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]) with starting radius 0.00, ending radius 900.00, and depth 90.00, using 1.00 second ripples spaced 15.00 apart
          • UnitÃ* - Create 1 L4zor 2 for (Owner of (Casting unit)) at ((Target point of ability being cast) offset by (Random real number between 0.00 and 500.00) towards (Random angle) degrees) facing Orientamento predefinito degli edifici degrees
          • Set ZK_DropL4zor[(Player number of (Owner of (Casting unit)))] = (Last created unit)
          • Animazione - Play ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]'s birth animation
          • Conto alla rovescia - Start ZK_DropTimer[(Player number of (Owner of (Casting unit)))] as a Una volta timer that will expire in 1.00 seconds
          • Wait until ((Remaining time for ZK_DropTimer[(Player number of (Owner of (Casting unit)))]) Minore o uguale a 0.30), checking every 0.25 seconds
          • Gruppo di unitÃ* - Pick every unit in (Units within (Random real number between 300.00 and 500.00) of (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))])) and do (Actions)
            • Giro - Azioni
              • UnitÃ* - Cause (Triggering unit) to damage (Picked unit), dealing ((Random real number between 500.00 and 900.00) - ((Distance between (Position of (Picked unit)) and (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))])) / 1.00)) damage of attack type Assedio and damage type Fuoco
          • UnitÃ* - Create 1 Blue Tiberium for Neutrale-passivo at (Position of ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]) facing Orientamento predefinito degli edifici degrees
          • UnitÃ* - Kill ZK_DropL4zor[(Player number of (Owner of (Casting unit)))]
        • Altrimenti - Azioni
          • Do nothing
It doesnt show up good , dunno why . Thanks aniway !
Download the map if you can't understand it .
 

Attachments

  • aTe.w3x
    109.1 KB · Views: 57
Level 4
Joined
Jul 3, 2005
Messages
100
JASS:
function Trig_Tiberium_Orbital_Cannon_Copia_Conditions takes nothing returns boolean
    if ( not ( GetSpellAbilityId() == 'A000' ) ) then
        return false
    endif
    return true
endfunction

function Trig_Tiberium_Orbital_Cannon_Copia_Func008001 takes nothing returns boolean
    return ( TimerGetRemaining(udg_ZK_DropTimer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]) <= 1.00 )
endfunction

function Trig_Tiberium_Orbital_Cannon_Copia_Func010Func005001 takes nothing returns boolean
    return ( TimerGetRemaining(udg_ZK_DropTimer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]) <= 0.30 )
endfunction

function Trig_Tiberium_Orbital_Cannon_Copia_Func010Func006A takes nothing returns nothing
    call UnitDamageTargetBJ( GetTriggerUnit(), GetEnumUnit(), ( GetRandomReal(400.00, 800.00) - ( DistanceBetweenPoints(GetUnitLoc(GetEnumUnit()), GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))])) / 1.00 ) ), ATTACK_TYPE_SIEGE, DAMAGE_TYPE_FIRE )
endfunction

function Trig_Tiberium_Orbital_Cannon_Copia_Func010Func012001 takes nothing returns boolean
    return ( TimerGetRemaining(udg_ZK_DropTimer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]) <= 0.30 )
endfunction

function Trig_Tiberium_Orbital_Cannon_Copia_Func010Func017001 takes nothing returns boolean
    return ( TimerGetRemaining(udg_ZK_DropTimer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]) <= 0.30 )
endfunction

function Trig_Tiberium_Orbital_Cannon_Copia_Func010Func018A takes nothing returns nothing
    call UnitDamageTargetBJ( GetTriggerUnit(), GetEnumUnit(), ( GetRandomReal(400.00, 800.00) - ( DistanceBetweenPoints(GetUnitLoc(GetEnumUnit()), GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))])) / 1.00 ) ), ATTACK_TYPE_SIEGE, DAMAGE_TYPE_FIRE )
endfunction

function Trig_Tiberium_Orbital_Cannon_Copia_Func010Func024001 takes nothing returns boolean
    return ( TimerGetRemaining(udg_ZK_DropTimer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]) <= 0.30 )
endfunction

function Trig_Tiberium_Orbital_Cannon_Copia_Func010Func029001 takes nothing returns boolean
    return ( TimerGetRemaining(udg_ZK_DropTimer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]) <= 0.30 )
endfunction

function Trig_Tiberium_Orbital_Cannon_Copia_Func010Func030A takes nothing returns nothing
    call UnitDamageTargetBJ( GetTriggerUnit(), GetEnumUnit(), ( GetRandomReal(400.00, 800.00) - ( DistanceBetweenPoints(GetUnitLoc(GetEnumUnit()), GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))])) / 1.00 ) ), ATTACK_TYPE_SIEGE, DAMAGE_TYPE_FIRE )
endfunction

function Trig_Tiberium_Orbital_Cannon_Copia_Func010Func036001 takes nothing returns boolean
    return ( TimerGetRemaining(udg_ZK_DropTimer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]) <= 0.30 )
endfunction

function Trig_Tiberium_Orbital_Cannon_Copia_Func010Func041001 takes nothing returns boolean
    return ( TimerGetRemaining(udg_ZK_DropTimer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]) <= 0.30 )
endfunction

function Trig_Tiberium_Orbital_Cannon_Copia_Func010Func042A takes nothing returns nothing
    call UnitDamageTargetBJ( GetTriggerUnit(), GetEnumUnit(), ( GetRandomReal(400.00, 800.00) - ( DistanceBetweenPoints(GetUnitLoc(GetEnumUnit()), GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))])) / 1.00 ) ), ATTACK_TYPE_SIEGE, DAMAGE_TYPE_FIRE )
endfunction

function Trig_Tiberium_Orbital_Cannon_Copia_Func010C takes nothing returns boolean
    if ( not ( GetUnitAbilityLevelSwapped(GetSpellAbilityId(), GetSpellAbilityUnit()) == 1 ) ) then
        return false
    endif
    return true
endfunction

function Trig_Tiberium_Orbital_Cannon_Copia_Func011Func005001 takes nothing returns boolean
    return ( TimerGetRemaining(udg_ZK_DropTimer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]) <= 0.30 )
endfunction

function Trig_Tiberium_Orbital_Cannon_Copia_Func011Func006A takes nothing returns nothing
    call UnitDamageTargetBJ( GetTriggerUnit(), GetEnumUnit(), ( GetRandomReal(500.00, 900.00) - ( DistanceBetweenPoints(GetUnitLoc(GetEnumUnit()), GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))])) / 1.00 ) ), ATTACK_TYPE_SIEGE, DAMAGE_TYPE_FIRE )
endfunction

function Trig_Tiberium_Orbital_Cannon_Copia_Func011Func010001 takes nothing returns boolean
    return ( TimerGetRemaining(udg_ZK_DropTimer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]) <= 0.30 )
endfunction

function Trig_Tiberium_Orbital_Cannon_Copia_Func011Func017001 takes nothing returns boolean
    return ( TimerGetRemaining(udg_ZK_DropTimer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]) <= 0.30 )
endfunction

function Trig_Tiberium_Orbital_Cannon_Copia_Func011Func018A takes nothing returns nothing
    call UnitDamageTargetBJ( GetTriggerUnit(), GetEnumUnit(), ( GetRandomReal(500.00, 900.00) - ( DistanceBetweenPoints(GetUnitLoc(GetEnumUnit()), GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))])) / 1.00 ) ), ATTACK_TYPE_SIEGE, DAMAGE_TYPE_FIRE )
endfunction

function Trig_Tiberium_Orbital_Cannon_Copia_Func011Func022001 takes nothing returns boolean
    return ( TimerGetRemaining(udg_ZK_DropTimer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]) <= 0.30 )
endfunction

function Trig_Tiberium_Orbital_Cannon_Copia_Func011Func029001 takes nothing returns boolean
    return ( TimerGetRemaining(udg_ZK_DropTimer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]) <= 0.30 )
endfunction

function Trig_Tiberium_Orbital_Cannon_Copia_Func011Func030A takes nothing returns nothing
    call UnitDamageTargetBJ( GetTriggerUnit(), GetEnumUnit(), ( GetRandomReal(500.00, 900.00) - ( DistanceBetweenPoints(GetUnitLoc(GetEnumUnit()), GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))])) / 1.00 ) ), ATTACK_TYPE_SIEGE, DAMAGE_TYPE_FIRE )
endfunction

function Trig_Tiberium_Orbital_Cannon_Copia_Func011Func034001 takes nothing returns boolean
    return ( TimerGetRemaining(udg_ZK_DropTimer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]) <= 0.30 )
endfunction

function Trig_Tiberium_Orbital_Cannon_Copia_Func011Func041001 takes nothing returns boolean
    return ( TimerGetRemaining(udg_ZK_DropTimer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]) <= 0.30 )
endfunction

function Trig_Tiberium_Orbital_Cannon_Copia_Func011Func042A takes nothing returns nothing
    call UnitDamageTargetBJ( GetTriggerUnit(), GetEnumUnit(), ( GetRandomReal(500.00, 900.00) - ( DistanceBetweenPoints(GetUnitLoc(GetEnumUnit()), GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))])) / 1.00 ) ), ATTACK_TYPE_SIEGE, DAMAGE_TYPE_FIRE )
endfunction

function Trig_Tiberium_Orbital_Cannon_Copia_Func011C takes nothing returns boolean
    if ( not ( GetUnitAbilityLevelSwapped(GetSpellAbilityId(), GetSpellAbilityUnit()) == 2 ) ) then
        return false
    endif
    return true
endfunction

function Trig_Tiberium_Orbital_Cannon_Copia_Actions takes nothing returns nothing
    call CreateNUnitsAtLoc( 1, 'h000', GetOwningPlayer(GetSpellAbilityUnit()), GetSpellTargetLoc(), bj_UNIT_FACING )
    call AddSpecialEffectLocBJ( GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]), "Abilities\\Spells\\Human\\MassTeleport\\MassTeleportCaster.mdl" )
    call CreateTimerDialogBJ( udg_ZK_DropTimer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))], "TRIGSTR_032" )
    set udg_ZK_DropBoard[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))] = GetLastCreatedTimerDialogBJ()
    call TimerDialogDisplayForPlayerBJ( true, udg_ZK_DropBoard[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))], GetOwningPlayer(GetSpellAbilityUnit()) )
    call StartTimerBJ( udg_ZK_DropTimer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))], false, 11.00 )
    loop
        exitwhen ( Trig_Tiberium_Orbital_Cannon_Copia_Func008001() )
        call TriggerSleepAction(RMaxBJ(bj_WAIT_FOR_COND_MIN_INTERVAL, 0.25))
    endloop
    call TimerDialogDisplayForPlayerBJ( false, udg_ZK_DropBoard[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))], GetOwningPlayer(GetSpellAbilityUnit()) )
    if ( Trig_Tiberium_Orbital_Cannon_Copia_Func010C() ) then
        call CreateNUnitsAtLoc( 1, 'h001', GetOwningPlayer(GetSpellAbilityUnit()), PolarProjectionBJ(GetSpellTargetLoc(), GetRandomReal(0, 500.00), GetRandomDirectionDeg()), bj_UNIT_FACING )
        set udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))] = GetLastCreatedUnit()
        call SetUnitAnimation( udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))], "birth" )
        call StartTimerBJ( udg_ZK_DropTimer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))], false, 1.00 )
        loop
            exitwhen ( Trig_Tiberium_Orbital_Cannon_Copia_Func010Func005001() )
            call TriggerSleepAction(RMaxBJ(bj_WAIT_FOR_COND_MIN_INTERVAL, 0.25))
        endloop
        call ForGroupBJ( GetUnitsInRangeOfLocAll(GetRandomReal(300.00, 500.00), GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))])), function Trig_Tiberium_Orbital_Cannon_Copia_Func010Func006A )
        call SetBlightRadiusLocBJ( true, GetOwningPlayer(GetSpellAbilityUnit()), GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]), 400.00 )
        call TerrainDeformationRippleBJ( 1.00, false, GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]), 0.00, 800.00, 64, 1, 15.00 )
        call CreateNUnitsAtLoc( 1, 'n000', Player(PLAYER_NEUTRAL_PASSIVE), GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]), bj_UNIT_FACING )
        call KillUnit( udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))] )
        call StartTimerBJ( udg_ZK_DropTimer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))], false, 1.00 )
        loop
            exitwhen ( Trig_Tiberium_Orbital_Cannon_Copia_Func010Func012001() )
            call TriggerSleepAction(RMaxBJ(bj_WAIT_FOR_COND_MIN_INTERVAL, 0.25))
        endloop
        call CreateNUnitsAtLoc( 1, 'h001', GetOwningPlayer(GetSpellAbilityUnit()), PolarProjectionBJ(GetSpellTargetLoc(), GetRandomReal(0, 500.00), GetRandomDirectionDeg()), bj_UNIT_FACING )
        set udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))] = GetLastCreatedUnit()
        call SetUnitAnimation( udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))], "birth" )
        call StartTimerBJ( udg_ZK_DropTimer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))], false, 1.00 )
        loop
            exitwhen ( Trig_Tiberium_Orbital_Cannon_Copia_Func010Func017001() )
            call TriggerSleepAction(RMaxBJ(bj_WAIT_FOR_COND_MIN_INTERVAL, 0.25))
        endloop
        call ForGroupBJ( GetUnitsInRangeOfLocAll(GetRandomReal(300.00, 500.00), GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))])), function Trig_Tiberium_Orbital_Cannon_Copia_Func010Func018A )
        call SetBlightRadiusLocBJ( true, GetOwningPlayer(GetSpellAbilityUnit()), GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]), 400.00 )
        call TerrainDeformationRippleBJ( 1.00, false, GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]), 0.00, 800.00, 64, 1, 15.00 )
        call CreateNUnitsAtLoc( 1, 'n000', Player(PLAYER_NEUTRAL_PASSIVE), GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]), bj_UNIT_FACING )
        call KillUnit( udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))] )
        call StartTimerBJ( udg_ZK_DropTimer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))], false, 1.00 )
        loop
            exitwhen ( Trig_Tiberium_Orbital_Cannon_Copia_Func010Func024001() )
            call TriggerSleepAction(RMaxBJ(bj_WAIT_FOR_COND_MIN_INTERVAL, 0.25))
        endloop
        call CreateNUnitsAtLoc( 1, 'h001', GetOwningPlayer(GetSpellAbilityUnit()), PolarProjectionBJ(GetSpellTargetLoc(), GetRandomReal(0, 500.00), GetRandomDirectionDeg()), bj_UNIT_FACING )
        set udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))] = GetLastCreatedUnit()
        call SetUnitAnimation( udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))], "birth" )
        call StartTimerBJ( udg_ZK_DropTimer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))], false, 1.00 )
        loop
            exitwhen ( Trig_Tiberium_Orbital_Cannon_Copia_Func010Func029001() )
            call TriggerSleepAction(RMaxBJ(bj_WAIT_FOR_COND_MIN_INTERVAL, 0.25))
        endloop
        call ForGroupBJ( GetUnitsInRangeOfLocAll(GetRandomReal(300.00, 500.00), GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))])), function Trig_Tiberium_Orbital_Cannon_Copia_Func010Func030A )
        call SetBlightRadiusLocBJ( true, GetOwningPlayer(GetSpellAbilityUnit()), GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]), 400.00 )
        call TerrainDeformationRippleBJ( 1.00, false, GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]), 0.00, 800.00, 64, 1, 15.00 )
        call CreateNUnitsAtLoc( 1, 'n000', Player(PLAYER_NEUTRAL_PASSIVE), GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]), bj_UNIT_FACING )
        call KillUnit( udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))] )
        call StartTimerBJ( udg_ZK_DropTimer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))], false, 1.00 )
        loop
            exitwhen ( Trig_Tiberium_Orbital_Cannon_Copia_Func010Func036001() )
            call TriggerSleepAction(RMaxBJ(bj_WAIT_FOR_COND_MIN_INTERVAL, 0.25))
        endloop
        call CreateNUnitsAtLoc( 1, 'h001', GetOwningPlayer(GetSpellAbilityUnit()), PolarProjectionBJ(GetSpellTargetLoc(), GetRandomReal(0, 500.00), GetRandomDirectionDeg()), bj_UNIT_FACING )
        set udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))] = GetLastCreatedUnit()
        call SetUnitAnimation( udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))], "birth" )
        call StartTimerBJ( udg_ZK_DropTimer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))], false, 1.00 )
        loop
            exitwhen ( Trig_Tiberium_Orbital_Cannon_Copia_Func010Func041001() )
            call TriggerSleepAction(RMaxBJ(bj_WAIT_FOR_COND_MIN_INTERVAL, 0.25))
        endloop
        call ForGroupBJ( GetUnitsInRangeOfLocAll(GetRandomReal(300.00, 500.00), GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))])), function Trig_Tiberium_Orbital_Cannon_Copia_Func010Func042A )
        call SetBlightRadiusLocBJ( true, GetOwningPlayer(GetSpellAbilityUnit()), GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]), 400.00 )
        call TerrainDeformationRippleBJ( 1.00, false, GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]), 0.00, 800.00, 64, 1, 15.00 )
        call KillUnit( udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))] )
        call CreateNUnitsAtLoc( 1, 'n000', Player(PLAYER_NEUTRAL_PASSIVE), GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]), bj_UNIT_FACING )
    else
        call DoNothing(  )
    endif
    if ( Trig_Tiberium_Orbital_Cannon_Copia_Func011C() ) then
        call CreateNUnitsAtLoc( 1, 'h002', GetOwningPlayer(GetSpellAbilityUnit()), PolarProjectionBJ(GetSpellTargetLoc(), GetRandomReal(0, 500.00), GetRandomDirectionDeg()), bj_UNIT_FACING )
        set udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))] = GetLastCreatedUnit()
        call SetUnitAnimation( udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))], "birth" )
        call StartTimerBJ( udg_ZK_DropTimer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))], false, 1.00 )
        loop
            exitwhen ( Trig_Tiberium_Orbital_Cannon_Copia_Func011Func005001() )
            call TriggerSleepAction(RMaxBJ(bj_WAIT_FOR_COND_MIN_INTERVAL, 0.25))
        endloop
        call ForGroupBJ( GetUnitsInRangeOfLocAll(GetRandomReal(300.00, 500.00), GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))])), function Trig_Tiberium_Orbital_Cannon_Copia_Func011Func006A )
        call CreateNUnitsAtLoc( 1, 'n001', Player(PLAYER_NEUTRAL_PASSIVE), GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]), bj_UNIT_FACING )
        call KillUnit( udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))] )
        call StartTimerBJ( udg_ZK_DropTimer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))], false, 1.00 )
        loop
            exitwhen ( Trig_Tiberium_Orbital_Cannon_Copia_Func011Func010001() )
            call TriggerSleepAction(RMaxBJ(bj_WAIT_FOR_COND_MIN_INTERVAL, 0.25))
        endloop
        call SetBlightRadiusLocBJ( true, GetOwningPlayer(GetSpellAbilityUnit()), GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]), 400.00 )
        call TerrainDeformationRippleBJ( 4, true, GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]), 0.00, 900.00, 90.00, 1, 15.00 )
        call CreateNUnitsAtLoc( 1, 'h002', GetOwningPlayer(GetSpellAbilityUnit()), PolarProjectionBJ(GetSpellTargetLoc(), GetRandomReal(0, 500.00), GetRandomDirectionDeg()), bj_UNIT_FACING )
        set udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))] = GetLastCreatedUnit()
        call SetUnitAnimation( udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))], "birth" )
        call StartTimerBJ( udg_ZK_DropTimer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))], false, 1.00 )
        loop
            exitwhen ( Trig_Tiberium_Orbital_Cannon_Copia_Func011Func017001() )
            call TriggerSleepAction(RMaxBJ(bj_WAIT_FOR_COND_MIN_INTERVAL, 0.25))
        endloop
        call ForGroupBJ( GetUnitsInRangeOfLocAll(GetRandomReal(300.00, 500.00), GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))])), function Trig_Tiberium_Orbital_Cannon_Copia_Func011Func018A )
        call CreateNUnitsAtLoc( 1, 'n001', Player(PLAYER_NEUTRAL_PASSIVE), GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]), bj_UNIT_FACING )
        call KillUnit( udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))] )
        call StartTimerBJ( udg_ZK_DropTimer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))], false, 1.00 )
        loop
            exitwhen ( Trig_Tiberium_Orbital_Cannon_Copia_Func011Func022001() )
            call TriggerSleepAction(RMaxBJ(bj_WAIT_FOR_COND_MIN_INTERVAL, 0.25))
        endloop
        call SetBlightRadiusLocBJ( true, GetOwningPlayer(GetSpellAbilityUnit()), GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]), 400.00 )
        call TerrainDeformationRippleBJ( 4, true, GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]), 0.00, 900.00, 90.00, 1, 15.00 )
        call CreateNUnitsAtLoc( 1, 'h002', GetOwningPlayer(GetSpellAbilityUnit()), PolarProjectionBJ(GetSpellTargetLoc(), GetRandomReal(0, 500.00), GetRandomDirectionDeg()), bj_UNIT_FACING )
        set udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))] = GetLastCreatedUnit()
        call SetUnitAnimation( udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))], "birth" )
        call StartTimerBJ( udg_ZK_DropTimer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))], false, 1.00 )
        loop
            exitwhen ( Trig_Tiberium_Orbital_Cannon_Copia_Func011Func029001() )
            call TriggerSleepAction(RMaxBJ(bj_WAIT_FOR_COND_MIN_INTERVAL, 0.25))
        endloop
        call ForGroupBJ( GetUnitsInRangeOfLocAll(GetRandomReal(300.00, 500.00), GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))])), function Trig_Tiberium_Orbital_Cannon_Copia_Func011Func030A )
        call CreateNUnitsAtLoc( 1, 'n001', Player(PLAYER_NEUTRAL_PASSIVE), GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]), bj_UNIT_FACING )
        call KillUnit( udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))] )
        call StartTimerBJ( udg_ZK_DropTimer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))], false, 1.00 )
        loop
            exitwhen ( Trig_Tiberium_Orbital_Cannon_Copia_Func011Func034001() )
            call TriggerSleepAction(RMaxBJ(bj_WAIT_FOR_COND_MIN_INTERVAL, 0.25))
        endloop
        call SetBlightRadiusLocBJ( true, GetOwningPlayer(GetSpellAbilityUnit()), GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]), 400.00 )
        call TerrainDeformationRippleBJ( 4, true, GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]), 0.00, 900.00, 90.00, 1, 15.00 )
        call CreateNUnitsAtLoc( 1, 'h002', GetOwningPlayer(GetSpellAbilityUnit()), PolarProjectionBJ(GetSpellTargetLoc(), GetRandomReal(0, 500.00), GetRandomDirectionDeg()), bj_UNIT_FACING )
        set udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))] = GetLastCreatedUnit()
        call SetUnitAnimation( udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))], "birth" )
        call StartTimerBJ( udg_ZK_DropTimer[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))], false, 1.00 )
        loop
            exitwhen ( Trig_Tiberium_Orbital_Cannon_Copia_Func011Func041001() )
            call TriggerSleepAction(RMaxBJ(bj_WAIT_FOR_COND_MIN_INTERVAL, 0.25))
        endloop
        call ForGroupBJ( GetUnitsInRangeOfLocAll(GetRandomReal(300.00, 500.00), GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))])), function Trig_Tiberium_Orbital_Cannon_Copia_Func011Func042A )
        call CreateNUnitsAtLoc( 1, 'n001', Player(PLAYER_NEUTRAL_PASSIVE), GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]), bj_UNIT_FACING )
        call KillUnit( udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))] )
    else
        call DoNothing(  )
    endif
endfunction

//===========================================================================
function InitTrig_Tiberium_Orbital_Cannon_Copia takes nothing returns nothing
    set gg_trg_Tiberium_Orbital_Cannon_Copia = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Tiberium_Orbital_Cannon_Copia, EVENT_PLAYER_UNIT_SPELL_CAST )
    call TriggerAddCondition( gg_trg_Tiberium_Orbital_Cannon_Copia, Condition( function Trig_Tiberium_Orbital_Cannon_Copia_Conditions ) )
    call TriggerAddAction( gg_trg_Tiberium_Orbital_Cannon_Copia, function Trig_Tiberium_Orbital_Cannon_Copia_Actions )
endfunction

Here is it . And thanks purplepoot , your always the best 'round here :3
 
Last edited:
Level 4
Joined
Jul 3, 2005
Messages
100
ZK_Drop_L4zor is a unit variable with a matrix of 12 ( 1 for each player, allowing the trigger to be multi-instanceable between players ) , and is the dummy of an laser effect.

Also can't you just download the map ?
It will be easier for both.

Thanks :3 !
 
Level 40
Joined
Dec 14, 2005
Messages
10,532
call CreateNUnitsAtLoc( 1, 'h000', GetOwningPlayer(GetSpellAbilityUnit()), GetSpellTargetLoc(), bj_UNIT_FACING )call AddSpecialEffectLocBJ( GetUnitLoc(udg_ZK_DropL4zor[GetConvertedPlayerId(GetOwningPlayer(GetSpellAbilityUnit()))]), "Abilities\\Spells\\Human\\MassTeleport\\MassTeleportCaster.mdl" )
Voila, there you go, you forget to set the dummy right there (first 2 lines)

Anyways, if you want the fixed/efficient script:

JASS:
function Trig_Tiberium_Orbital_Cannon_Copia_Conditions takes nothing returns boolean
    return GetSpellAbilityId() == 'A000'
endfunction

function Tiberium_Orbital_Cannon_Antileak takes nothing returns boolean
    return true
endfunction

function Trig_Tiberium_Orbital_Cannon_Copia_Actions takes nothing returns nothing
    local location l = GetSpellTargetLoc()
    local real x = GetLocationX(l)
    local real y = GetLocationY(l)
    local unit u = GetTriggerUnit()
    local player p = GetOwningPlayer(u)
    local unit d = CreateUnit(p,'h000',x,y,270)
    local real xd = GetUnitX(d)
    local real yd = GetUnitY(d)
    local integer pid = GetPlayerId(p)+1
    local effect e = AddSpecialEffect("Abilities\\Spells\\Human\\MassTeleport\\MassTeleportCaster.mdl",xd,yd)
    local timerdialog td = CreateTimerDialog(udg_ZK_DropTimer[pid])
    local group g
    local unit t
    local real r
    local integer i = 0
    local integer id1 = 'h001'
    local integer id2 = 'n000'
    local integer lvl = GetUnitAbilityLevel(u,GetSpellAbilityId())
    local integer dur = 1000
    local boolean lim = false
    call TimerDialogSetTitle(td,"TRIGSTR_032")
    call RemoveLocation(l)
    set l = null
    set udg_ZK_DropBoard[pid] = td
    if GetLocalPlayer() == p then
        call TimerDialogDisplay(td,true)
    endif
    call TimerStart(udg_ZK_DropTimer[pid],11,false,null)
    loop
        exitwhen TimerGetRemaining(udg_ZK_DropTimer[pid]) <= 1
        call TriggerSleepAction(.25)
    endloop
    if GetLocalPlayer() == p then
        call TimerDialogDisplay(td,false)
    endif
    if lvl > 0 and lvl < 3 then
        if lvl == 2 then
            set id1 = 'h002'
            set id2 = 'n001'
            set dur = 4000
            set lim = true
        endif
        loop
            exitwhen i > 3
            set d = CreateUnit(p,id1,x+GetRandomReal(0,500)*Cos(GetRandomReal(0,bj_PI*2)),y+GetRandomReal(0,500)*Sin(GetRandomReal(0,bj_PI*2)),270)
            set xd = GetUnitX(d)
            set yd = GetUnitY(d)
            call SetUnitAnimation(d,"birth")
            call TimerStart(udg_ZK_DropTimer[pid],1,false,null)
            loop
                exitwhen TimerGetRemaining(udg_ZK_DropTimer[pid]) <= .3
                call TriggerSleepAction(.25)
            endloop
            set g = CreateGroup()
            call GroupEnumUnitsInRange(g,xd,yd,GetRandomReal(300,500),Filter(function Tiberium_Orbital_Cannon_Antileak))
            loop
                set t = FirstOfGroup(g)
                exitwhen t == null
                call UnitDamageTarget(u,t,GetRandomReal(300+100*lvl,700+100*lvl)-SquareRoot((GetUnitX(t)-xd)*(GetUnitX(t)-xd)+(GetUnitY(t)-yd)*(GetUnitY(t)-yd)),true,false,ATTACK_TYPE_SIEGE,DAMAGE_TYPE_FIRE,null)
                call GroupRemoveUnit(g,t)
            endloop
            call DestroyGroup(g)
            call SetBlight(p,xd,yd,400,true)
            call TerrainDeformRipple(xd,yd,700+100*lvl,38+26*lvl,dur,1,(700+100*lvl)/7.5,dur/500,0,lim)
            call KillUnit(d)
            set d = CreateUnit(Player(15),id2,xd,yd,270)
            call TimerStart(udg_ZK_DropTimer[pid],1,false,null)
            loop
                exitwhen TimerGetRemaining(udg_ZK_DropTimer[pid]) <= .3
                call TriggerSleepAction(.25)
            endloop
            set i = i + 1
        endloop
    endif
    set g = null
endfunction

function InitTrig_Tiberium_Orbital_Cannon_Copia takes nothing returns nothing
    set gg_trg_Tiberium_Orbital_Cannon_Copia = CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Tiberium_Orbital_Cannon_Copia, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_Tiberium_Orbital_Cannon_Copia, Condition( function Trig_Tiberium_Orbital_Cannon_Copia_Conditions ) )
    call TriggerAddAction( gg_trg_Tiberium_Orbital_Cannon_Copia, function Trig_Tiberium_Orbital_Cannon_Copia_Actions )
endfunction
 
Status
Not open for further replies.
Top