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.
  • Monovertex Monovertex:
    Hmm, how do I change my signature?
  • tom_mai78101 tom_mai78101:
    Signatures can be edit in your account profile. As for the old stuffs, I'm thinking it's because Blizzard is now under Microsoft, and because of Microsoft Xbox going the way it is, it's dreadful.
  • The Helper The Helper:
    I am not big on the recipes I am just promoting them - I use the site as a practice place promoting stuff
    +2
  • Monovertex Monovertex:
    @tom_mai78101 I must be blind. If I go on my profile I don't see any area to edit the signature; If I go to account details (settings) I don't see any signature area either.
  • The Helper The Helper:
    You can get there if you click the bell icon (alerts) and choose preferences from the bottom, signature will be in the menu on the left there https://www.thehelper.net/account/preferences
  • The Helper The Helper:
    I think I need to split the Sci/Tech news forum into 2 one for Science and one for Tech but I am hating all the moving of posts I would have to do
  • The Helper The Helper:
    What is up Old Mountain Shadow?
  • The Helper The Helper:
    Happy Thursday!
    +1
  • Varine Varine:
    Crazy how much 3d printing has come in the last few years. Sad that it's not as easily modifiable though
  • Varine Varine:
    I bought an Ender 3 during the pandemic and tinkered with it all the time. Just bought a Sovol, not as easy. I'm trying to make it use a different nozzle because I have a fuck ton of Volcanos, and they use what is basically a modified volcano that is just a smidge longer, and almost every part on this thing needs to be redone to make it work
  • Varine Varine:
    Luckily I have a 3d printer for that, I guess. But it's ridiculous. The regular volcanos are 21mm, these Sovol versions are about 23.5mm
  • Varine Varine:
    So, 2.5mm longer. But the thing that measures the bed is about 1.5mm above the nozzle, so if I swap it with a volcano then I'm 1mm behind it. So cool, new bracket to swap that, but THEN the fan shroud to direct air at the part is ALSO going to be .5mm to low, and so I need to redo that, but by doing that it is a little bit off where it should be blowing and it's throwing it at the heating block instead of the part, and fuck man
  • Varine Varine:
    I didn't realize they designed this entire thing to NOT be modded. I would have just got a fucking Bambu if I knew that, the whole point was I could fuck with this. And no one else makes shit for Sovol so I have to go through them, and they have... interesting pricing models. So I have a new extruder altogether that I'm taking apart and going to just design a whole new one to use my nozzles. Dumb design.
  • Varine Varine:
    Can't just buy a new heatblock, you need to get a whole hotend - so block, heater cartridge, thermistor, heatbreak, and nozzle. And they put this fucking paste in there so I can't take the thermistor or cartridge out with any ease, that's 30 dollars. Or you can get the whole extrudor with the direct driver AND that heatblock for like 50, but you still can't get any of it to come apart
  • Varine Varine:
    Partsbuilt has individual parts I found but they're expensive. I think I can get bits swapped around and make this work with generic shit though
  • Ghan Ghan:
    Heard Houston got hit pretty bad by storms last night. Hope all is well with TH.
  • The Helper The Helper:
    Power back on finally - all is good here no damage
    +2
  • V-SNES V-SNES:
    Happy Friday!
    +1
  • The Helper The Helper:
    New recipe is another summer dessert Berry and Peach Cheesecake - https://www.thehelper.net/threads/recipe-berry-and-peach-cheesecake.194169/
  • The Helper The Helper:
    I think we need to add something to the bottom of the front page that shows the Headline News forum that has a link to go to the News Forum Index so people can see there is more news. Do you guys see what I am saying, lets say you read all the articles on the front page and you get to the end and it just ends, no kind of link for MOAR!
  • The Helper The Helper:
    Happy Wednesday!
    +1

      The Helper Discord

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top