triggering problem

educator

New Member
Reaction score
9
ok, im making a map and the idea is:all movement is arrow keys, there are 3-4 units (so far) each unit has triggered attacks (a melee, missile, homing missile) and the aim is to kill the enemies. iv done the melee but im stuck on the missile, here is my triggeres:
Trigger:
  • Missile atk
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Holy Lance
    • Actions
      • Set caster_holylance = (Casting unit)
      • Unit - Create 1 Holy lance missie for (Owner of caster_holylance) at (Position of caster_holylance) facing (Facing of caster_holylance) degrees
      • Special Effect - Create a special effect attached to the origin of dummy_holylance using Abilities\Weapons\BloodElfMissile\BloodElfMissile.mdl
      • Set dummy_holylance = (Last created unit)
      • Trigger - Turn on misile atk periodic <gen>
      • Wait 4.00 seconds
      • Unit - Kill dummy_holylance
      • Trigger - Turn off misile atk periodic <gen>


Trigger:
  • misile atk periodic
    • Events
      • Time - Every 0.04 seconds of game time
    • Conditions
    • Actions
      • Set damage_holylance = (Units within 100.00 of (Position of dummy_holylance) matching ((((Matching unit) belongs to an enemy of (Owner of dummy_holylance)) Equal to True) and ((((Matching unit) has buff Acid Bomb) Equal to False) and (((Matching unit) is alive) Equal to True))))
      • Unit - Move dummy_holylance instantly to ((Position of dummy_holylance) offset by 30.00 towards (Facing of dummy_holylance) degrees), facing (Facing of dummy_holylance) degrees
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in damage_holylance) Greater than 0
        • Then - Actions
          • Unit Group - Pick every unit in damage_holylance and do (Actions)
            • Loop - Actions
              • Unit - Cause caster_holylance to damage (Picked unit), dealing 55.00 damage of attack type Pierce and damage type Normal
              • Unit - Kill dummy_holylance
              • Custom script: call DestroyGroup( udg_damage_holylance )
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Number of units in damage_holylance) Less than 1
            • Then - Actions
              • Custom script: call DestroyGroup( udg_damage_holylance )
            • Else - Actions
        • Else - Actions


the problems are: sometimes the projectile will just die randomly, it deals tooo much damage. what its supposed to do: create a projectile that moves forward from the caster for 4 seconds, if an enemy unit is in a certain range of the projectil it makes the caster deal 55 damage and the projectile dies. if it doesn't hit a unit in 4 seconds it dies.
any and all help is appreciated
 

perkeyone

something clever
Reaction score
71
waits can mess things up, here is an alternative way to kill that unit after 4 seconds
Trigger:
  • Missile atk
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Holy Lance
    • Actions
      • Set caster_holylance = (Casting unit)
      • Unit - Create 1 Holy lance missie for (Owner of caster_holylance) at (Position of caster_holylance) facing (Facing of caster_holylance) degrees
      • Special Effect - Create a special effect attached to the origin of dummy_holylance using Abilities\Weapons\BloodElfMissile\BloodElfMissile.mdl
      • Set dummy_holylance = (Last created unit)
      • Unit - Add a 4.00 second Generic expiration timer to (Last created unit)
      • Trigger - Turn on misile atk periodic <gen>

you only want to damage one unit per missile.. right?
first check if there are any units in the unit group.
if there are, pick a random one and damage it, then kill the missile.
Trigger:
  • misile atk periodic
    • Events
      • Time - Every 0.04 seconds of game time
    • Conditions
    • Actions
      • Set damage_holylance = (Units within 100.00 of (Position of dummy_holylance) matching ((((Matching unit) belongs to an enemy of (Owner of dummy_holylance)) Equal to True) and ((((Matching unit) has buff Acid Bomb) Equal to False) and (((Matching unit) is alive) Equal to True))))
      • Unit - Move dummy_holylance instantly to ((Position of dummy_holylance) offset by 30.00 towards (Facing of dummy_holylance) degrees), facing (Facing of dummy_holylance) degrees
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in damage_holylance) Greater than 0
        • Then - Actions
          • Unit - Cause caster_holylance to damage (Random unit from (damage_holylance), dealing 55.00 damage of attack type Pierce and damage type Normal
          • Unit - Kill dummy_holylance
        • Else - Actions
      • Custom script: call DestroyGroup( udg_damage_holylance )

here is an extra trigger for after the missile dies.
Trigger:
  • missile off
    • Events
      • Unit - A unit Dies
    • Conditions
      • (Unit-type of (Dying unit)) Equal to Holy_lance_missie
    • Actions
      • Trigger - Turn off misile atk periodic <gen>
 

perkeyone

something clever
Reaction score
71
one other thing, those triggers have some leaks.
all those point variables need to be stored and the destroyed.
im not very good at that though lol
 

Gummi_Bears

New Member
Reaction score
5
If only one unit is allowed to cast this spell, it will work fine. However if this is not the case, your variables will overwrite and the person who casted the spell first will get cut off. You'll have to use another method, like indexing.

Trigger:
  • Unit - Create 1 Holy lance missie for (Owner of caster_holylance) at (Position of caster_holylance) facing (Facing of caster_holylance) degrees


I think 'position of caster_holylance' will leak. You the point to a variable, then remove it using:

Trigger:
  • Set HL_CasterPos = Position of caster_holylance
    • Custom script: call RemoveLocation( udg_HL_CasterPos )
 

educator

New Member
Reaction score
9
yes iv had the problem that only one projectile of a type can move at a time, what is indexing and how can it fix the problem(not only can just one unit use it at a time but that unit can only have one going at a time)
-edit ok im impatient and dont have access to the world editor right now, if i use
missile spawn + aim trig
events
unit starts the effect of an ability
conditions
(ability being cast) equal to (holylance)
actions
create 1 hldummymissile for (owner of (casting unit) at (position of (casting unit)) (facing of(casting unit))
set hl_dummy = last ceated unit
set caster_hl = casting unit

missile move trig
events
every 0.3 seconds
conditions
actions
set hl_missiles = units in entire map matching (unit type of(matching unit) equal to (hlmissile)
pick every unit in (hl_missiles) and do actions
lool actions:
move (picked unit) instantly to (position of (picked unit) with polar offset of 25 towards (facing of(picked unit) and face (facing of(picked unit)

missile damage trig
events
a unit comes within 150 range of hl_dummy
conditions
actions
cause caster_hl deal 45 damage to (triggering unit) attack type of magic damage type of normal

will it work?
 
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