• 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.

How to make big bad voodoo not loop the buff effect?

Status
Not open for further replies.
Level 13
Joined
Feb 5, 2018
Messages
567
What do you mean? Not to channel? Or that the units get immunity for only once?

If you don't want the caster to channel you could create a dummy unit with big bad voodoo.

And if you only want to make it last once, maybe you could trigger it or reduce the time of the skill in object editor.

If you need to achieve both, combine these two things and it's a wrap.

Not really sure what you want to do :p
 
Level 13
Joined
Feb 5, 2018
Messages
567
I guess it is just dummy units then with a periodic trigger. Alter the duration of the dummy big bad voodoo to 1 or something. Could also make a loop in the initial trigger with custom scripts.

Create dummy unit, order cast. After 2 seconds, create new dummy unit and so on.

Well while I was typing this I already made it for you.

  • Big bad voodoo
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Big bad voodoo
    • Actions
      • Custom script: local unit udg_Caster = GetTriggerUnit()
      • Custom script: local integer udg_Time = 10
      • Custom script: local unit udg_Dummy
      • Custom script: local location udg_Loc
      • Custom script: local timer udg_Timer
      • Custom script: local real udg_Wait = 1.00
      • Set VariableSet Loc = (Position of Caster)
      • Custom script: if ( not ( GetUnitCurrentOrder(udg_Caster) == String2OrderIdBJ("voodoo") ) ) then
      • Custom script: endif
      • Custom script: loop
      • Custom script: set udg_Timer = CreateTimer()
      • Custom script: call TimerStart(udg_Timer,udg_Wait,false,null)
      • Custom script: call PolledWait (udg_Wait)
      • Unit - Create 1 Peasant for (Owner of Caster) at Loc facing Default building facing degrees
      • Set VariableSet Dummy = (Last created unit)
      • Unit - Add a 1.00 second Generic expiration timer to Dummy
      • Unit - Add Big bad voodoo (Dummy) to Dummy
      • Unit - Order Dummy to Orc Shadow Hunter - Big Bad Voodoo.
      • Custom script: call PauseTimer (udg_Timer)
      • Custom script: call DestroyTimer (udg_Timer)
      • Set VariableSet Time = (Time - 1)
      • Custom script: exitwhen udg_Time == 0
      • Custom script: endloop

On the demomap the units a created once every second and the voodoo is set to last 0.5 seconds, but you can alter the times as you like. For some mysterious reason the check to see if the caster is channeling does not currently seem to apply, but i'll try to fix that later.

Oh and it seems I forgot to remove the location, but you can do it. :)
 

Attachments

  • Voodoo.w3m
    18.2 KB · Views: 11
Level 13
Joined
Feb 5, 2018
Messages
567
Oh at least when I tried with the normal big bad voodoo it keeps the buff as long as the units are in range. That's probably why I misunderstood. Anyways, if you are having issues with your base big bad voodoo, you can still use my system and alter it in a way that the buff lasts longer and create units in a faster rate so they should then always have the buff.
 
Status
Not open for further replies.
Top