• 🏆 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!

[Trigger] My debuff removal/speed boost spell wont increase my speed

Status
Not open for further replies.
Level 1
Joined
Sep 24, 2014
Messages
5
I am having trouble figuring out why this spell does not track the buff correctly, or increase the move speed of the unit. I dont really care about it being mui, but i did try to make it mui, and it didnt work so i tried this to make it simpler for me so i could figure out where i went wrong easier. Some of the triggers are done really oddly, like where I use if/then/else functions instead of just setting to level of UnstoppableBuffNumber and capping it at 5, but it doesnt work when done in a more logical sense, and this is just what im working with atm.

  • Unstoppable Buff Tracker
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Level of Unstoppable for (Target unit of ability being cast)) Greater than 0
    • Actions
      • Set UnstoppableCaster = (Target unit of ability being cast)
      • Set UnstoppablePoint = (Position of UnstoppableCaster)
      • Set UnstoppableBuffNumber = (UnstoppableBuffNumber + 1)
      • Unit - Remove Unstoppable (1) buff from (Target unit of ability being cast)
      • Unit - Remove Unstoppable (2) buff from (Target unit of ability being cast)
      • Unit - Remove Unstoppable (3) buff from (Target unit of ability being cast)
      • Unit - Remove Unstoppable (4) buff from (Target unit of ability being cast)
      • Unit - Remove Unstoppable (5) buff from (Target unit of ability being cast)
      • Unit - Create 1 DullahanDummy for (Owner of UnstoppableCaster) at UnstoppablePoint facing Default building facing degrees
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • UnstoppableBuffNumber Greater than or equal to 5
        • Then - Actions
          • Unit - Set level of Unstoppable Buff for (Last created unit) to 5
        • Else - Actions
          • Unit - Set level of Unstoppable Buff for (Last created unit) to UnstoppableBuffNumber
      • Unit - Order (Last created unit) to Orc Shaman - Bloodlust UnstoppableCaster
      • Unit - Add a 3.00 second Generic expiration timer to (Last created unit)
      • Custom script: call RemoveLocation( udg_UnstoppablePoint )
This section for some reason instantly sets the unstoppable buff level to 5 so i cant ever get less than max level buff. The dummy spell applies different buffs per level for player identification of how many stacks they have. I have the variable set to 0 at initialization.

  • Unstoppable Active
    • Events
      • Unit - A unit Is issued an order with no target
    • Conditions
      • (Issued order) Equal to (Order(berserk))
    • Actions
      • Unit - Remove Unstoppable (1) buff from (Triggering unit)
      • Unit - Remove Unstoppable (2) buff from (Triggering unit)
      • Unit - Remove Unstoppable (3) buff from (Triggering unit)
      • Unit - Remove Unstoppable (4) buff from (Triggering unit)
      • Unit - Remove Unstoppable (5) buff from (Triggering unit)
      • Unit - Remove Negative buffs considered Magic or physical from (Triggering unit) (Include expiration timers, Exclude auras)
      • Set UnstoppableCaster = (Triggering unit)
      • Set UnstoppableLevel = (Level of Unstoppable for UnstoppableCaster)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • UnstoppableBuffNumber Greater than or equal to 5
        • Then - Actions
          • Unit - Set UnstoppableCaster movement speed to ((Default movement speed of UnstoppableCaster) + 100.00)
        • Else - Actions
          • Unit - Set UnstoppableCaster movement speed to ((Default movement speed of UnstoppableCaster) + (20.00 x (Real(UnstoppableBuffNumber))))
      • Set UnstoppableBuffNumber = 0
      • Set UnstoppableDuration = (2.00 + (Real(UnstoppableLevel)))
      • Trigger - Turn on Unstoppable Timer <gen>
The issue here is that no matter what i do, the move speed of my unit does not change. (I'm testing it with a display current movespeed text function)

  • Unstoppable Timer
    • Events
      • Time - Every 0.10 seconds of game time
    • Conditions
    • Actions
      • Set UnstoppableDuration = (UnstoppableDuration - 0.10)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • UnstoppableDuration Less than or equal to 0.00
        • Then - Actions
          • Unit - Set UnstoppableCaster movement speed to (Default movement speed of UnstoppableCaster)
          • Trigger - Turn off (This trigger)
        • Else - Actions
          • Do nothing
This Doesnt even seem to become turned on upon activation of the ability.


In conclusion, i really can't figure out why it doesnt work. I feel like it might be something really simple that I am glossing over, so im sorry if thats the case! The hero has all his negative buffs removed, and the always unstoppable (5) buff gets removed so the active trigger is working, but it doesnt do like half of the effects. The ability will have no overlap time and will only be used by one unit so mui doesnt really matter and i'll remove all the leaks when it works, but i just need to figure this out!

Thanks in advance!
 
Level 12
Joined
Oct 16, 2010
Messages
680
  • Unit - A unit Is issued an order with no target
Im pretty sure that bloodlust has a target so it won't fire at all thats why the priodic trigger will never turn on

  • Conditions
    • (Level of Unstoppable for (Target unit of ability being cast)) Greater than 0
this is silly , why would you check the target? unless the ability is selfcast
but that means the caster is the target so it obviously has the spell on a greater level than 0.

in 2nd trigger u set UnstoppableCaster to Triggering Unit , but i think it will be the ordered unit(the dummy) so change it to Order Target Unit

and u set UnstoppableBuffNumber to 0 after every cast
this will result in no stacks will be available
setting it to 0 should be part of the periodic trigger when the time runs out
 
Level 1
Joined
Sep 24, 2014
Messages
5
Like I said in my original post, the trigger fires because it removes debuffs on the unit.

I am using the item ability berserk which detects inputs even when the unit is stunned, but not if silenced or hexed.

In regards to the second point, that trigger actually is there to detect spells cast by OTHER units onto the unit with this spell.

The spell is supposed to gain stacks per spell targeted at the hero, and when he activates it it purges debuffs and boosts his speed based on the current charges.



Sorry if it was unclear, but the first trigger is counting the stacks of unstoppable (up to 5 stacks) the second trigger is purging the buffs and boosting speed and the third is just timing the ability.

From what i can tell the issue is somewhere between receiving stacks on the unit and converting them into move speed.
 
Level 1
Joined
Sep 24, 2014
Messages
5
Sorry, im quite bad at this, usually i can figure these things out myself...


Unstoppable = The spell based on item ability frenzy, which is a no target spell(on hero)

UnstoppableCaster is just the unit with the spell unstoppable.

Unstoppable buff number is the number of "charges" on the unit.

The way i think its supposed to work is that whenever any other unit targets this unit with a spell, it has any existing "unstoppable (n)" buffs removed, and a dummy is summoned which uses a "bloodlust" to apply a 60 minute buff "unstoppable (n+1)" is added to the unit with a maximum of 5.



Then whenever UnstoppableCaster activates his spell, he is purged of debuffs, and his move speed increased based on the number of charges he has accrued. Then after 3/4/5/6 seconds he returns to normal.

Really it should work without the "unstoppable" buffs. at all (so just ignore the dummy unit that is created i suppose, because its only function is for the player to see how many stacks they have currently.) Only important thing in the first trigger is having "UnstoppableBuffNumber" set to +1

Edit: the issue is that even for a simple "when hit by a spell the number go +1" it doesnt count properly and jumps straight to 5 (trigger 1), and that no movespeedd is increased in trigger 2 no matter how many stacks are available!
 
Level 12
Joined
Oct 16, 2010
Messages
680
The way i think its supposed to work is that whenever any other unit targets this unit with a spell, it has any existing "unstoppable (n)" buffs removed, and a dummy is summoned which uses a "bloodlust" to apply a 60 minute buff "unstoppable (n+1)" is added to the unit with a maximum of 5.

Umm well i try to understand u:D

1. hero targeted with spell - gains a stack of buff
2. hero cast Unstoppable - it is self cast and purges debuffs + gains movespeed depending on number of stacks.

right?

then you should check if ability being cast in first trigger must not be Unstopable neither bloodlust:)
preventing that using the ability and casting bloodlust on the unit instantly reapplies the buff and fires the trigger again and again and again etc...

EDIT: also keep in mind to change the maximum move speed for the unit in object editor
that could be the reason why the move speed doesn't changes:/
 
Level 1
Joined
Sep 24, 2014
Messages
5
Ah! Perfect! that answers my initial problem of the buffs maxing out to 5 straight away!

Can you think of a reason why i wouldn't be getting my move speed then? If it worked id be getting max speed everytime, but it isnt!

thank you!
 
Status
Not open for further replies.
Top