• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.

[Solved] non dispel or steal bloodlust ability

deepstrasz

Map Reviewer
Level 75
Joined
Jun 4, 2009
Messages
20,274
I think you'll have to trigger the spell yourself.
Before that you could try using Berserk and Frenzy and see if they can be dispelled or stolen.
Anyways, you can basically add a dummy hidden ability, specifically an endurance aura which has 0 range meaning it will only affect the caster/wearer. Then you trigger when to remove it from the unit by using a timer or even a cooldown/set ability real (this one if you're using 1.32+ game version).
If you want it on multiple units, you need to use a dummy Bloodlust/ally/friend autocast ability which triggers the adding and removing of such or a similar spell mentioned above.
 
Level 18
Joined
Dec 20, 2012
Messages
269
You can make non dispellable buffs by using Wietlol's [GUI] Effect Over Time System 2.3.1 with the variable EOT_Param_Can_Dispell = False. Check his map triggers for examples. If you want more examples, feel free to check the triggers of my altered melee maps which utilizes his system.

The beauty of this system is not only that its not just non-dispellable buffs but also capable of creating new buffs that can be stacked and not overwrite vanilla buffs. Like for an example if you make a new derivative spell from Inner Fire that increases life regen instead of the usual damage and armor increase. A unit with this new custom buff can be lost and replaced with Inner Fire vanilla buff when a Priest cast Inner Fire on it and vice versa.

 
Level 18
Joined
Dec 20, 2012
Messages
269
It would need an update though since from 1.31.1 onward buffs can stack without needing to trigger this.
Well we don't know what warcraft version he is using. And so far no I have received no bug reports from players using reforged regarding my custom spells/buffs/etc and I feels this system even with some new functionality doesn't really conflicts and causes problems.

I know that reforged can detect damage detection now but people still uses Bribe's Damage Detection system because it have more features. Wietlol is similar to that.
 
Level 26
Joined
Sep 7, 2018
Messages
547
actually i found a way to add non dispel buff to unit with shadow strike ability.
you just need to add friend target to targets allowed stats.
  • Berserk
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Berserk (Orc Warlord)
    • Actions
      • -------- Config --------
      • Set Berserk_level = (Level of Berserk (Orc Warlord) for (Triggering unit))
      • Set Strength[1] = Item Hero Stat Bonus (+2 Strength)
      • Set Strength[2] = Item Hero Stat Bonus (+4 Strength)
      • Set Strength[3] = Item Hero Stat Bonus (+6 Strength)
      • -------- Positive effect --------
      • Unit - Add Strength[Berserk_level] to (Triggering unit)
      • Wait 20.00 seconds
      • Unit - Remove Strength[Berserk_level] from (Triggering unit)
      • -------- Negative effect --------
      • Set Temp_Point = (Position of (Triggering unit))
      • Unit - Create 1 Dummy for (Owner of (Triggering unit)) at Temp_Point facing Default building facing degrees
      • Set Dummy = (Last created unit)
      • Unit - Add Berserk (Negative) to Dummy
      • Unit - Order Dummy to Night Elf Warden - Shadow Strike (Triggering unit)
      • Unit - Add a 0.20 second Generic expiration timer to Dummy
      • Custom script: call RemoveLocation( udg_Temp_Point )
 
Last edited:
Level 18
Joined
Dec 20, 2012
Messages
269
actually i found a way to add non dispel buff to unit with shadow strike ability.
you just need to add friend target to targets allowed stats.
  • Berserk
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Berserk (Orc Warlord)
    • Actions
      • -------- Config --------
      • Set Berserk_level = (Level of Berserk (Orc Warlord) for (Triggering unit))
      • Set Strength[1] = Item Hero Stat Bonus (+2 Strength)
      • Set Strength[2] = Item Hero Stat Bonus (+4 Strength)
      • Set Strength[3] = Item Hero Stat Bonus (+6 Strength)
      • -------- Positive effect --------
      • Unit - Add Strength[Berserk_level] to (Triggering unit)
      • Wait 20.00 seconds
      • Unit - Remove Strength[Berserk_level] from (Triggering unit)
      • -------- Negative effect --------
      • Set Temp_Point = (Position of (Triggering unit))
      • Unit - Create 1 Dummy for (Owner of (Triggering unit)) at Temp_Point facing Default building facing degrees
      • Set Dummy = (Last created unit)
      • Unit - Add Berserk (Negative) to Dummy
      • Unit - Order Dummy to Night Elf Warden - Shadow Strike (Triggering unit)
      • Unit - Add a 0.20 second Generic expiration timer to Dummy
      • Custom script: call RemoveLocation( udg_Temp_Point )
Hm, I don't that is mui or will work properly since you're using waits. You need an unit indexing system. If you don't want install that, then you can accomplish it too by using custom script. Here an example...
  • Berserk Lvl 1
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Berserk (Orc Warlord)
      • (Level of (Ability being cast) for (Triggering unit)) Equal to 1
    • Actions
      • Custom script: local real duration = 20.00
      • Custom script: local unit target = GetTriggerUnit()
      • Custom script: call UnitAddAbility( target, 'A00O')
      • Custom script: call TriggerSleepAction (duration)
      • Custom script: call UnitRemoveAbility( target, 'A00O')
      • Custom script: set target = null
You need to go to object editor, then to view, check display values as raw data. Replace A00O with the rawcode of your Item Hero Stat Bonus. Then you need to copy and paste this trigger two times for lvl2 and lvl3 bonus Item Hero Stat Bonus. Helpful to remember that the rawcode is enclosed by apostrophe like this 'A00O'

A second opinion would be nice, been wondering why Uncle hasn't posted since he usually a long, informative answer and then realized your thread is in requests instead of world editor help zone. Might be useful to ask mods to transfer the thread so more talented peeps can answer your question.
 
Level 26
Joined
Sep 7, 2018
Messages
547
Hm, I don't that is mui or will work properly since you're using waits. You need an unit indexing system. If you don't want install that, then you can accomplish it too by using custom script. Here an example...
  • Berserk Lvl 1
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Berserk (Orc Warlord)
      • (Level of (Ability being cast) for (Triggering unit)) Equal to 1
    • Actions
      • Custom script: local real duration = 20.00
      • Custom script: local unit target = GetTriggerUnit()
      • Custom script: call UnitAddAbility( target, 'A00O')
      • Custom script: call TriggerSleepAction (duration)
      • Custom script: call UnitRemoveAbility( target, 'A00O')
      • Custom script: set target = null
You need to go to object editor, then to view, check display values as raw data. Replace A00O with the rawcode of your Item Hero Stat Bonus. Then you need to copy and paste this trigger two times for lvl2 and lvl3 bonus Item Hero Stat Bonus. Helpful to remember that the rawcode is enclosed by apostrophe like this 'A00O'

A second opinion would be nice, been wondering why Uncle hasn't posted since he usually a long, informative answer and then realized your thread is in requests instead of world editor help zone. Might be useful to ask mods to transfer the thread so more talented peeps can answer your question.
i test it in my map it's a mui spell, for test i made a simple trigger with
  • Untitled Trigger 001
    • Events
      • Time - Elapsed game time is 5.00 seconds
    • Conditions
    • Actions
5 custom unit when they reach at negative point, all of them receive it at same time, wait out any problem.
 
Last edited:

deepstrasz

Map Reviewer
Level 75
Joined
Jun 4, 2009
Messages
20,274
(Triggering unit) will not get overwritten, it acts like a local variable.
So, the trigger remembers the triggering unit as a unique variable after the wait if another unit starts the ability before the wait finished? So when the wait ends, both triggering units are different units which will trigger the actions separately/properly?
 

Uncle

Warcraft Moderator
Level 73
Joined
Aug 10, 2018
Messages
7,893
so my ability is a mui abilty?
This line isn't MUI:
  • Unit - Remove Strength[Berserk_level] from (Triggering unit)
You're referencing a variable after a Wait, that variable can change to some other value during this time.

If you want to snapshot this level so it remains the same throughout the trigger then do this:
  • -------- Config --------
  • Custom script: local integer udg_Berserk_Level
  • Set Berserk_level = (Level of Berserk (Orc Warlord) for (Triggering unit))
Now it will act like a local variable (with some scope restrictions).


Keep in mind that Waits are inconsistent and need to be synced when playing online. Not the end of the world but don't be surprised when it doesn't sync up with your Buff since that uses a Timer which is 100% precise. Edit: Also, if you're able to cast this ability again while it's already running it will break since you'll essentially have two Waits running that are both trying to remove the ability. The first instance will end early and remove the ability for BOTH instances.
 
Last edited:
Level 26
Joined
Sep 7, 2018
Messages
547
This line isn't MUI:
  • Unit - Remove Strength[Berserk_level] from (Triggering unit)
You're referencing a variable after a Wait, that variable can change to some other value during this time.

If you want to snapshot this level so it remains the same throughout the trigger then do this:
  • -------- Config --------
  • Custom script: local integer udg_Berserk_Level
  • Set Berserk_level = (Level of Berserk (Orc Warlord) for (Triggering unit))
Now it will act like a local variable (with some scope restrictions).


Keep in mind that Waits are inconsistent and need to be synced when playing online. Not the end of the world but don't be surprised when it doesn't sync up with your Buff since that uses a Timer which is 100% precise. Edit: Also, if you're ability to cast this ability again while it's already running it will break since you'll essentially have two Waits running that are both trying to remove the ability. The first instance will end early and remove the ability for BOTH instances.
thanks.
 
Top