Changing Specific Spell Trigger To 'Any' Spell Trigger

WolfieeifloW

WEHZ Helper
Reaction score
372
Hey there guys.
I've been trying for an hour now to try and change this trigger to work with multiple spells, but can't get it to work!
I have a trigger that intercepts auto-cast spells that I don't want to be auto-cast, and stops the player from setting them to auto-cast (A mouthful!).

Ex: An ability based on Searing Arrows, used because it just adds onto the hero's attack. I don't want the player to be able to actually use the auto-cast part of it, so the trigger intercepts the auto-cast command and stops it.

Here's my trigger:
JASS:
scope NoAutoCast initializer NACInit

    globals
        private unit nacUnit
        private player nacPlayer
        private timer nacTimer = CreateTimer()
        private constant integer nacMangle = 'A00C'       
    endglobals
    
    private function CallBack takes nothing returns nothing
        call SetPlayerAbilityAvailable(nacPlayer, nacMangle, true)
    endfunction

    private function Conditions takes nothing returns boolean
        if (GetIssuedOrderId() == OrderId("coldarrows") and GetUnitTypeId(GetTriggerUnit()) == mDruid) then
            set nacUnit = GetTriggerUnit()
            set nacPlayer = GetOwningPlayer(nacUnit)
            call SetPlayerAbilityAvailable(nacPlayer, nacMangle, false)
            call TimerStart(nacTimer, 0.00, false, function CallBack)
            call SimError(nacPlayer, "This spell isn't auto-cast!")
        endif
        return false
    endfunction
    
    private function NACInit takes nothing returns nothing
        local trigger t = CreateTrigger()
        local integer index = 0
        
        loop
            call TriggerRegisterPlayerUnitEvent(t, Player(index), EVENT_PLAYER_UNIT_ISSUED_ORDER, null)
            set index = index + 1
            exitwhen index == bj_MAX_PLAYER_SLOTS
        endloop
        call TriggerAddCondition(t, Condition(function Conditions))
        set t = null
    endfunction
    
endscope

Now..
I want to change it so that the if checks what hero unit the trigger is used by.
I want to change so that it disable/enables the used ability.

I've tried so many ways to do something this simple, but it doesn't work..

I'm going to have probably two heroes, with ~3 spells each that use this fake auto-cast spell thing.

So what I want is this trigger changed so that it:
Checks what hero issued the order, and if the order != the 4th spell the hero has.
I'm assuming just like:
JASS:
if (GetUnitTypeId(GetTriggerUnit()) == 'U000' and GetSpellAbilityId() != 'A000' or GetUnitTypeId(GetTriggerUnit()) == 'U001' and GetSpellAbilityId() != 'A001') then

Gets whatever integer ability was used, and passes it throughout.
Like:
JASS:


Can anyone help?


/EDIT: I've tried to change my code like below, but whenever I try to learn a skill it displays the simerror, and whenever I try to auto-cast the spell it displays the simerror (Which it should) but still allows the spell to go on auto-cast.
JASS:
scope NoAutoCast initializer NACInit

    globals
        private unit nacUnit
        private player nacPlayer
        private timer nacTimer = CreateTimer()
        private integer nacAbil
    endglobals
    
    private function CallBack takes nothing returns nothing
        call SetPlayerAbilityAvailable(nacPlayer, nacAbil, true)
    endfunction

    private function Conditions takes nothing returns boolean
        if (GetUnitTypeId(GetTriggerUnit()) == mDruid) then
            set nacUnit = GetTriggerUnit()
            set nacPlayer = GetOwningPlayer(nacUnit)
            set nacAbil = GetSpellAbilityId()
            call SetPlayerAbilityAvailable(nacPlayer, nacAbil, false)
            call TimerStart(nacTimer, 0.00, false, function CallBack)
            call SimError(nacPlayer, "This spell isn't auto-cast!")
        endif
        return false
    endfunction
    
    private function NACInit takes nothing returns nothing
        local trigger t = CreateTrigger()
        local integer index = 0
        
        loop
            call TriggerRegisterPlayerUnitEvent(t, Player(index), EVENT_PLAYER_UNIT_ISSUED_ORDER, null)
            set index = index + 1
            exitwhen index == bj_MAX_PLAYER_SLOTS
        endloop
        call TriggerAddCondition(t, Condition(function Conditions))
        set t = null
    endfunction
    
endscope



/EDIT2: This code works, but I don't want to have multiple callback functions:
JASS:
scope NoAutoCast initializer NACInit

    globals
        private unit nacUnit
        private player nacPlayer
        private timer nacTimer = CreateTimer()
        private constant integer nacMangle = 'A00C'
        private constant integer nacClaw = 'A00D'
    endglobals
    
    private function CallbackMangle takes nothing returns nothing
        call SetPlayerAbilityAvailable(nacPlayer, nacMangle, true)
    endfunction
    
    private function CallbackClaw takes nothing returns nothing
        call SetPlayerAbilityAvailable(nacPlayer, nacClaw, true)
    endfunction

    private function Conditions takes nothing returns boolean
        if (GetUnitTypeId(GetTriggerUnit()) == mDruid) then
            set nacUnit = GetTriggerUnit()
            set nacPlayer = GetOwningPlayer(nacUnit)
            if (GetIssuedOrderId() == OrderId("coldarrows")) then
                call SetPlayerAbilityAvailable(nacPlayer, nacMangle, false)
                call TimerStart(nacTimer, 0.00, false, function CallbackMangle)
                call SimError(nacPlayer, "This spell isn't auto-cast!")
            elseif (GetIssuedOrderId() == OrderId("poisonarrows")) then
                call SetPlayerAbilityAvailable(nacPlayer, nacClaw, false)
                call TimerStart(nacTimer, 0.00, false, function CallbackClaw)
                call SimError(nacPlayer, "This spell isn't auto-cast!")
            endif
        endif
        return false
    endfunction
    
    private function NACInit takes nothing returns nothing
        local trigger t = CreateTrigger()
        local integer index = 0
        
        loop
            call TriggerRegisterPlayerUnitEvent(t, Player(index), EVENT_PLAYER_UNIT_ISSUED_ORDER, null)
            set index = index + 1
            exitwhen index == bj_MAX_PLAYER_SLOTS
        endloop
        call TriggerAddCondition(t, Condition(function Conditions))
        set t = null
    endfunction
    
endscope
 

WolfieeifloW

WEHZ Helper
Reaction score
372
No one?
If I didn't explain it right, or someone doesn't understand fully what's wrong/what I want, please post!
 

luorax

Invasion in Duskwood
Reaction score
67
You don't have to add/remove your spells if you want to block it to be auto-casted. You can issue the unit to turn it off.

So you can do something like this:
JASS:
scope NoAutoCast initializer NACInit

    globals
        private unit nacUnit
        private player nacPlayer
    endglobals
    
    private function Conditions takes nothing returns boolean
        if (GetUnitTypeId(GetTriggerUnit()) == mDruid) then
            set nacUnit = GetTriggerUnit()
            set nacPlayer = GetOwningPlayer(nacUnit)
            if (GetIssuedOrderId() == OrderId("coldarrows")) or (GetIssuedOrderId() == OrderId("poisonarrows")) then
                call IssueImmediateOrder(nacUnit, "un" + OrderId2String(GetIssuedOrderId()))
                call SimError(nacPlayer, "This spell isn't auto-cast!")
            endif
        endif
        return false
    endfunction
    
    private function NACInit takes nothing returns nothing
        local trigger t = CreateTrigger()
        local integer index = 0
        
        loop
            call TriggerRegisterPlayerUnitEvent(t, Player(index), EVENT_PLAYER_UNIT_ISSUED_ORDER, null)
            set index = index + 1
            exitwhen index == bj_MAX_PLAYER_SLOTS
        endloop
        call TriggerAddCondition(t, Condition(function Conditions))
        set t = null
    endfunction
endscope


I think this will work.

This is my version (uses a stack, so you dont have to spam those ifs)
JASS:
scope NoAutoCast initializer NACInit

    globals
        private unit nacUnit
        private player nacPlayer
        private string array stack
        private integer stackLevel = 0
    endglobals
    
    private function Check takes string s returns boolean
        local integer i = 0
        loop
            exitwhen i >= stackLevel
            if s == stack<i> then
                return true
            endif
            set i = i + 1
        endloop
        return false
    endfunction
    
    private function AddToStack takes string s returns nothing
        set stack[stackLevel] = s
        set stackLevel = stackLevel + 1
    endfunction
    
    private function Conditions takes nothing returns boolean
        if (GetUnitTypeId(GetTriggerUnit()) == mDruid) then
            set nacUnit = GetTriggerUnit()
            set nacPlayer = GetOwningPlayer(nacUnit)
            if Check(OrderId2String(GetIssuedOrderId())) then
                call IssueImmediateOrder(nacUnit, &quot;un&quot; + OrderId2String(GetIssuedOrderId()))
                call SimError(nacPlayer, &quot;This spell isn&#039;t auto-cast!&quot;)
            endif
        endif
        return false
    endfunction
    
    private function NACInit takes nothing returns nothing
        local trigger t = CreateTrigger()
        local integer index = 0
        
        loop
            call TriggerRegisterPlayerUnitEvent(t, Player(index), EVENT_PLAYER_UNIT_ISSUED_ORDER, null)
            set index = index + 1
            exitwhen index == bj_MAX_PLAYER_SLOTS
        endloop
        call TriggerAddCondition(t, Condition(function Conditions))
        
        call AddToStack(&quot;poisonarrows&quot;)
        call AddToStack(&quot;coldarrows&quot;)
        set t = null
    endfunction
    
endscope
</i>


(TBH I'm not 100% sure if this will work, but a simple test won't hurt)
 

WolfieeifloW

WEHZ Helper
Reaction score
372
Both of those still allow me to put the spell onto auto-cast.
I think that was the reason for the add/remove.
Let me see if I can find the thread where someone helped me.


/EDIT: Here we go, look at posts 8, 9, and 12.
 

luorax

Invasion in Duskwood
Reaction score
67
Ah, I got it...

Then what about this?:
JASS:
scope NoAutoCast initializer NACInit

    globals
        //--- Locals ---
        private unit nacUnit
        private player nacPlayer
        private timer nacTimer = CreateTimer()
        private integer nacAbil
        //--- Stack ---
        private string array orderStack
        private integer array abilityStack
        private integer stackLevel = 0
    endglobals
    
    private function Check takes string s returns boolean
        local integer i = 0
        loop
            exitwhen i &gt;= stackLevel
            if s == orderStack<i> then
                return true
            endif
            set i = i + 1
        endloop
        return false
    endfunction
    
    private function GetAbilityByOrder takes string s returns integer
        local integer i = 0
        loop
            exitwhen i &gt;= stackLevel
            if s == orderStack<i> then
                return abilityStack<i>
            endif
            set i = i + 1
        endloop
        return 0
    endfunction
    
    private function AddToStack takes string s, integer id returns nothing
        set orderStack[stackLevel] = s
        set abilityStack[stackLevel] = id
        set stackLevel = stackLevel + 1
    endfunction
    
    private function CallBack takes nothing returns nothing
        call SetPlayerAbilityAvailable(nacPlayer, nacAbil, true)
    endfunction
    
    private function Conditions takes nothing returns boolean
        if (GetUnitTypeId(GetTriggerUnit()) == mDruid) then
            set nacUnit = GetTriggerUnit()
            set nacPlayer = GetOwningPlayer(nacUnit)
            if Check(OrderId2String(GetIssuedOrderId())) then
                set nacAbil = GetAbilityByOrder(OrderId2String(GetIssuedOrderId()))
                call SetPlayerAbilityAvailable(nacPlayer, nacAbil, false)
                call TimerStart(nacTimer, 0.00, false, function CallBack)
                call SimError(nacPlayer, &quot;This spell isn&#039;t auto-cast!&quot;)
            endif
        endif
        return false
    endfunction
    
    private function NACInit takes nothing returns nothing
        local trigger t = CreateTrigger()
        local integer index = 0
        
        loop
            call TriggerRegisterPlayerUnitEvent(t, Player(index), EVENT_PLAYER_UNIT_ISSUED_ORDER, null)
            set index = index + 1
            exitwhen index == bj_MAX_PLAYER_SLOTS
        endloop
        call TriggerAddCondition(t, Condition(function Conditions))
        
        call AddToStack(&quot;poisonarrows&quot;, &#039;A00C&#039;)
        call AddToStack(&quot;coldarrows&quot;, &#039;A00D&#039;)
        set t = null
    endfunction
    
endscope
</i></i></i>


You have to add your orders and IDs in the initializer function, like this:
JASS:
call AddToStack(&quot;poisonarrows&quot;, &#039;A00C&#039;)
call AddToStack(&quot;coldarrows&quot;, &#039;A00D&#039;)
 

luorax

Invasion in Duskwood
Reaction score
67
Yes, do so, or use another stack, like I did this time:

JASS:
scope NoAutoCast initializer NACInit

    globals
        //--- Locals ---
        private unit nacUnit
        private player nacPlayer
        private timer nacTimer = CreateTimer()
        private integer nacAbil
        //--- Spell Stack ---
        private string array orderStack
        private integer array abilityStack
        private integer stackLevel = 0
        //--- Type Stack ---
        private integer array typeStack
        private integer typeStackLevel = 0
    endglobals
    
    private function Check takes string s returns boolean
        local integer i = 0
        loop
            exitwhen i &gt;= stackLevel
            if s == orderStack<i> then
                return true
            endif
            set i = i + 1
        endloop
        return false
    endfunction
    
    private function TypeCheck takes integer id returns boolean
        local integer i = 0
        loop
            exitwhen i &gt;= typeStackLevel
            if id == typeStack<i> then
                return true
            endif
            set i = i + 1
        endloop
        return false
    endfunction
    
    private function GetAbilityByOrder takes string s returns integer
        local integer i = 0
        loop
            exitwhen i &gt;= stackLevel
            if s == orderStack<i> then
                return abilityStack<i>
            endif
            set i = i + 1
        endloop
        return 0
    endfunction
    
    private function AddToStack takes string s, integer id returns nothing
        set orderStack[stackLevel] = s
        set abilityStack[stackLevel] = id
        set stackLevel = stackLevel + 1
    endfunction
    
    private function AddTypeToStack takes string s, integer id returns nothing
        set typeStack[stackLevel] = id
        set typeStackLevel = typeStackLevel + 1
    endfunction
    
    private function CallBack takes nothing returns nothing
        call SetPlayerAbilityAvailable(nacPlayer, nacAbil, true)
    endfunction
    
    private function Conditions takes nothing returns boolean
        if TypeCheck(GetUnitTypeId(GetTriggerUnit())) then
            set nacUnit = GetTriggerUnit()
            set nacPlayer = GetOwningPlayer(nacUnit)
            if Check(OrderId2String(GetIssuedOrderId())) then
                set nacAbil = GetAbilityByOrder(OrderId2String(GetIssuedOrderId()))
                call SetPlayerAbilityAvailable(nacPlayer, nacAbil, false)
                call TimerStart(nacTimer, 0.00, false, function CallBack)
                call SimError(nacPlayer, &quot;This spell isn&#039;t auto-cast!&quot;)
            endif
        endif
        return false
    endfunction
    
    private function NACInit takes nothing returns nothing
        local trigger t = CreateTrigger()
        local integer index = 0
        
        loop
            call TriggerRegisterPlayerUnitEvent(t, Player(index), EVENT_PLAYER_UNIT_ISSUED_ORDER, null)
            set index = index + 1
            exitwhen index == bj_MAX_PLAYER_SLOTS
        endloop
        call TriggerAddCondition(t, Condition(function Conditions))
        
        //Adding spells
        call AddToStack(&quot;poisonarrows&quot;, &#039;A00C&#039;)
        call AddToStack(&quot;coldarrows&quot;, &#039;A00D&#039;)
        
        //Adding unit types
        call AddTypeToStack(mDruid)
        call AddTypeToStack(mRogue)
        
        set t = null
    endfunction
    
endscope
</i></i></i></i>
 

WolfieeifloW

WEHZ Helper
Reaction score
372
Changing it my way didn't work, and using your trigger above doesn't work.
The Druid's spell won't auto-cast, but the second unit/spell I add still auto-casts.
 

luorax

Invasion in Duskwood
Reaction score
67
Yes, do so, or use another stack, like I did this time:

JASS:

scope NoAutoCast initializer NACInit

    globals
        //--- Locals ---
        private unit nacUnit
        private player nacPlayer
        private timer nacTimer = CreateTimer()
        private integer nacAbil
        //--- Spell Stack ---
        private string array orderStack
        private integer array abilityStack
        private integer stackLevel = 0
        //--- Type Stack ---
        private integer array typeStack
        private integer typeStackLevel = 0
    endglobals
    
    private function Check takes string s returns boolean
        local integer i = 0
        loop
            exitwhen i &gt;= stackLevel
            if s == orderStack<i> then
                return true
            endif
            set i = i + 1
        endloop
        return false
    endfunction
    
    private function TypeCheck takes integer id returns boolean
        local integer i = 0
        loop
            exitwhen i &gt;= typeStackLevel
            if id == typeStack<i> then
                return true
            endif
            set i = i + 1
        endloop
        return false
    endfunction
    
    private function GetAbilityByOrder takes string s returns integer
        local integer i = 0
        loop
            exitwhen i &gt;= stackLevel
            if s == orderStack<i> then
                return abilityStack<i>
            endif
            set i = i + 1
        endloop
        return 0
    endfunction
    
    private function AddToStack takes string s, integer id returns nothing
        set orderStack[stackLevel] = s
        set abilityStack[stackLevel] = id
        set stackLevel = stackLevel + 1
    endfunction
    
    private function AddTypeToStack takes string s, integer id returns nothing
        set typeStack[stackLevel] = id
        set typeStackLevel = typeStackLevel + 1
    endfunction
    
    private function CallBack takes nothing returns nothing
        call SetPlayerAbilityAvailable(nacPlayer, nacAbil, true)
    endfunction
    
    private function Conditions takes nothing returns boolean
        call BJDebugMsg(&quot;A spell has been casted&quot;)
        call BJDebugMsg(&quot;-Checking unit type&quot;)
        if TypeCheck(GetUnitTypeId(GetTriggerUnit())) then
            call BJDebugMsg(&quot;-type: okay&quot;)
            set nacUnit = GetTriggerUnit()
            set nacPlayer = GetOwningPlayer(nacUnit)
            call BJDebugMsg(&quot;-Checking Spell&quot;)
            if Check(OrderId2String(GetIssuedOrderId())) then
                call BJDebugMsg(&quot;-spell: okay&quot;)
                call BJDebugMsg(&quot;-Turning it off&quot;)
                set nacAbil = GetAbilityByOrder(OrderId2String(GetIssuedOrderId()))
                call SetPlayerAbilityAvailable(nacPlayer, nacAbil, false)
                call TimerStart(nacTimer, 0.00, false, function CallBack)
                //call SimError(nacPlayer, &quot;This spell isn&#039;t auto-cast!&quot;)
                call BJDebugMsg(&quot;Done&quot;)
            endif
        endif
        return false
    endfunction
    
    private function NACInit takes nothing returns nothing
        local trigger t = CreateTrigger()
        local integer index = 0
        
        loop
            call TriggerRegisterPlayerUnitEvent(t, Player(index), EVENT_PLAYER_UNIT_ISSUED_ORDER, null)
            set index = index + 1
            exitwhen index == bj_MAX_PLAYER_SLOTS
        endloop
        call TriggerAddCondition(t, Condition(function Conditions))
        
        //Adding spells
        
        //Adding unit types
        
        set t = null
    endfunction
    
endscope
</i></i></i></i>


Run this code (with your types/spells, of course), and tell me what's the last line you can see.
 

luorax

Invasion in Duskwood
Reaction score
67
Well, I think the problem is here:
JASS:
private function AddTypeToStack takes string s, integer id returns nothing
    set typeStack[stackLevel] = id
    set typeStackLevel = typeStackLevel + 1
endfunction


It should be:
JASS:
private function AddTypeToStack integer id returns nothing
    set typeStack[typeStackLevel ] = id
    set typeStackLevel = typeStackLevel + 1
endfunction
 

luorax

Invasion in Duskwood
Reaction score
67
Check it again :) (help: array indexes)
Yes, it was kinda hard to notice, but I think that causes the error.
 

WolfieeifloW

WEHZ Helper
Reaction score
372
Druid works:
A spell has been casted
-Checking unit type
-type: okay
-Checking Spell
-spell: okay
-Turning it off
Done
The Ret Paladin also shows the same thing, but the spell still shows the auto-cast circling.

JASS:
scope NoAutoCast initializer NACInit

    globals
        //--- Locals ---
        private unit nacUnit
        private player nacPlayer
        private timer nacTimer = CreateTimer()
        private integer nacAbil
        //--- Spell Stack ---
        private string array orderStack
        private integer array abilityStack
        private integer stackLevel = 0
        //--- Type Stack ---
        private integer array typeStack
        private integer typeStackLevel = 0
    endglobals
    
    private function Check takes string s returns boolean
        local integer i = 0
        loop
            exitwhen i &gt;= stackLevel
            if s == orderStack<i> then
                return true
            endif
            set i = i + 1
        endloop
        return false
    endfunction
    
    private function TypeCheck takes integer id returns boolean
        local integer i = 0
        loop
            exitwhen i &gt;= typeStackLevel
            if id == typeStack<i> then
                return true
            endif
            set i = i + 1
        endloop
        return false
    endfunction
    
    private function GetAbilityByOrder takes string s returns integer
        local integer i = 0
        loop
            exitwhen i &gt;= stackLevel
            if s == orderStack<i> then
                return abilityStack<i>
            endif
            set i = i + 1
        endloop
        return 0
    endfunction
    
    private function AddToStack takes string s, integer id returns nothing
        set orderStack[stackLevel] = s
        set abilityStack[stackLevel] = id
        set stackLevel = stackLevel + 1
    endfunction
    
    private function AddTypeToStack takes integer id returns nothing
        set typeStack[typeStackLevel ] = id
        set typeStackLevel = typeStackLevel + 1
    endfunction
    
    private function CallBack takes nothing returns nothing
        call SetPlayerAbilityAvailable(nacPlayer, nacAbil, true)
    endfunction
    
    private function Conditions takes nothing returns boolean
        call BJDebugMsg(&quot;A spell has been casted&quot;)
        call BJDebugMsg(&quot;-Checking unit type&quot;)
        if TypeCheck(GetUnitTypeId(GetTriggerUnit())) then
            call BJDebugMsg(&quot;-type: okay&quot;)
            set nacUnit = GetTriggerUnit()
            set nacPlayer = GetOwningPlayer(nacUnit)
            call BJDebugMsg(&quot;-Checking Spell&quot;)
            if Check(OrderId2String(GetIssuedOrderId())) then
                call BJDebugMsg(&quot;-spell: okay&quot;)
                call BJDebugMsg(&quot;-Turning it off&quot;)
                set nacAbil = GetAbilityByOrder(OrderId2String(GetIssuedOrderId()))
                call SetPlayerAbilityAvailable(nacPlayer, nacAbil, false)
                call TimerStart(nacTimer, 0.00, false, function CallBack)
                //call SimError(nacPlayer, &quot;This spell isn&#039;t auto-cast!&quot;)
                call BJDebugMsg(&quot;Done&quot;)
            endif
        endif
        return false
    endfunction
    
    private function NACInit takes nothing returns nothing
        local trigger t = CreateTrigger()
        local integer index = 0
        
        loop
            call TriggerRegisterPlayerUnitEvent(t, Player(index), EVENT_PLAYER_UNIT_ISSUED_ORDER, null)
            set index = index + 1
            exitwhen index == bj_MAX_PLAYER_SLOTS
        endloop
        call TriggerAddCondition(t, Condition(function Conditions))
        
        call AddToStack(&quot;flamingarrows&quot;, &#039;A00L&#039;)
        call AddToStack(&quot;flamingarrows&quot;, &#039;A00P&#039;)
        
        //Adding unit types
        call AddTypeToStack(feralDruid)
        call AddTypeToStack(retPaladin)
        
        set t = null
    endfunction
    
endscope</i></i></i></i>
 

luorax

Invasion in Duskwood
Reaction score
67
JASS:
call AddToStack(&quot;flamingarrows&quot;, &#039;A00L&#039;)
call AddToStack(&quot;flamingarrows&quot;, &#039;A00P&#039;)


The orderid's are the same. That causes the problem, as the ability code is attached to the orderid. Change it, and it'll (propably) work.
 

luorax

Invasion in Duskwood
Reaction score
67
Just change the order string, I think that's enough. If not, then base it on different spell (but I think changing the ID is enough)
 

Solmyr

Ultra Cool Member
Reaction score
30
Just change the order string, I think that's enough. If not, then base it on different spell (but I think chaning the ID is enough)

Nope, that wouldn't work. He'd have to use different base spell.
 

WolfieeifloW

WEHZ Helper
Reaction score
372
Hmm..
Is there no way to make it work with the same order strings?
Searing Arrows are the only arrow that don't require a debuff;
Which I sort of need.
 

WolfieeifloW

WEHZ Helper
Reaction score
372
Well, unless there's a way to make this script work with same order strings, I've done a work around that works, but isn't very good.
I've just removed all art from a cold arrow, and changed the buff to a custom 'blank' buff.
I'm going to run out of 'arrow' spells though, so if there's a way to get this to work with same order strings, that would be amazing.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top