Heat Seeking Missles; Not Working

Blackrage

Ultra Cool Member
Reaction score
25
Okay, heres the spell: The tinker shoots out a missle that will go towards the target point. If the missle goes within range of a unit, or multiple units, it will choose the unit with the most health and chase after it. It will deal damage depending on level when it hits a enemy unit.

Theres a problem with the distance variable in the trigger though. I know because i put a message after it and i tested it in game. It goes negative after 2 runs of the periodic trigger and finishes the spell.

Heres the code:

Code:
Heat Seeking Missle
    Events
        Unit - A unit Starts the effect of an ability
    Conditions
        (Ability being cast) Equal to Heat Seeking Missle 
    Actions
        Set HSM_Caster = (Triggering unit)
        Set HSM_Point = (Position of HSM_Caster)
        Set HSM_TargetLoc = (Target point of ability being cast)
        Set HSM_Distance = (400.00 + (200.00 x (Real((Level of Heat Seeking Missle  for HSM_Caster)))))
        Unit - Create 1 HSMDummy for (Owner of HSM_Caster) at HSM_Point facing (Angle from HSM_Point to HSM_TargetLoc) degrees
        Set HSM_Missle = (Last created unit)
        Unit - Order (Last created unit) to Move To (HSM_Point offset by (600.00 + (200.00 x (Real((Level of Heat Seeking Missle  for HSM_Caster))))) towards (Facing of HSM_Missle) degrees)
        Trigger - Turn on Heat Seeking Missle Periodic <gen>

Code:
Heat Seeking Missle Periodic
    Events
        Time - Every 0.06 seconds of game time
    Conditions
    Actions
        Set TempPoint[1] = (Position of HSM_Missle)
        Set TempGroup = (Units within (50.00 x (Real((Level of Heat Seeking Missle  for HSM_Caster)))) of TempPoint[1] matching (((Matching unit) belongs to an enemy of (Owner of HSM_Caster)) Equal to True))
        Set HSM_Distance = (HSM_Distance - (Distance between HSM_Point and TempPoint[1]))
        Game - Display to (All players) for 5.00 seconds the text: (String(HSM_Distance))
        Custom script:   call RemoveLocation(udg_HSM_Point)
        Set HSM_Point = TempPoint[1]
        Set TempReal = 0.00
        Custom script:   set bj_wantDestroyGroup = true
        Unit Group - Pick every unit in (Units within (150.00 + (50.00 x (Real((Level of Heat Seeking Missle  for HSM_Caster))))) of TempPoint[1] matching (((Matching unit) belongs to an enemy of (Owner of HSM_Caster)) Equal to True)) and do (Actions)
            Loop - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        (Life of (Picked unit)) Greater than TempReal
                    Then - Actions
                        Set TempReal = (Life of (Picked unit))
                        Set HSM_HighestHealth = (Picked unit)
                    Else - Actions
        Set TempPoint[2] = (Position of HSM_HighestHealth)
        Unit - Order HSM_Missle to Move To TempPoint[2]
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                Or - Any (Conditions) are true
                    Conditions
                        (Number of units in TempGroup) Greater than 0
                        HSM_Distance Less than or equal to 0.00
            Then - Actions
                Unit - Cause HSM_Caster to damage (Picked unit), dealing (50.00 + (30.00 x (Real((Level of Heat Seeking Missle  for HSM_Caster))))) damage of attack type Spells and damage type Normal
                Unit - Kill HSM_Missle
            Else - Actions
                Do nothing
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                Or - Any (Conditions) are true
                    Conditions
                        (Number of units in TempGroup) Greater than 0
                        HSM_Distance Less than or equal to 0.00
            Then - Actions
                Custom script:   call RemoveLocation(udg_TempPoint[1])
                Custom script:   call RemoveLocation(udg_TempPoint[2])
                Custom script:   call RemoveLocation(udg_HSM_Point)
                Custom script:   call RemoveLocation(udg_HSM_TargetLoc)
                Custom script:   call DestroyGroup(udg_TempGroup)
                Trigger - Turn off (This trigger)
            Else - Actions
        Custom script:   call RemoveLocation(udg_TempPoint[1])
        Custom script:   call RemoveLocation(udg_TempPoint[2])
        Custom script:   call DestroyGroup(udg_TempGroup)
\

Helpers will get +rep
 

Samael88

Evil always finds a way
Reaction score
181
Code:
Set HSM_Point = (Position of HSM_Caster)
Set TempPoint[1] = (Position of HSM_Missle)
Set HSM_Distance = (HSM_Distance - (Distance between HSM_Point and TempPoint[1]))

Won't this (Distance between HSM_Point and TempPoint[1]) increase?
it starts small and then it goes further and further away from the caster.
It would make HSM_Distance Smaller, and the (Distance between HSM_Point and TempPoint[1]) larger.

HSM_Distance= 400 - 100
HSM_Distance= 300 - 200
HSM_Distance= 100 - 400
Do I really have to write out the rest of that calculation?

And it turns of the trigger after the HSM_Distance Less than or equal to 0.00.

I don't see why you don't make it with move unit instantly and a good formula to calculate the movement of it.

S=V*T
V=S/T
T=S/V
S=Distance
V=Velocity
T=time

That one helps me alot when making these kind of stuff;)

Edit: On second thought. No it will not increase. The distance between the caster and the missile will not increase beacuse you are using the order unit to move.
If not the missile got imba speed, it will not have time to move much at all:S Beacuse every 0.6 of game time it will be forced to stop and then move again meaning it won't have time to move at all:p
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top