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

OrderType

Status
Not open for further replies.
I need to know if a new order is instant (non-interrupts) or will queue current order (not instant).
So simply checking for "No Target" is not enough.
I didn't really see a good way for checking, so I tried to define the data on my own and put them into array.
data is probably not complete and 100% correct yet, because I wasn't really in mood to detaily check each order and such.
You're very welcome to deliver if you wanna help and see mistakes.^^

used this as reference: Orders repo

JASS:
library OrderType  /* v0.1 hiveworkshop.com/threads/ordertype.291223/

    Can be used to get destinguish "no target" orders.
    Other types are not really supported (yet?).
 
*/ requires /*
    
        */ OrderIds           /* hiveworkshop.com/threads/orders-repo.290882/
    

related:

    OrderTypes: hiveworkshop.com/threads/snippet-order-types.169593/
    ^This "OrderTypes" library can be used for getting UNIT_TARGET, POINT_TARGET, and UNIT_POINT_TARGET.
 
*/
// ========== API ==========
//! novjass
         struct OrderType
      
            constant integer INSTANT    // Real instant orders.
        
            constant integer QUEUE      // Not instant orders, but they will
                                        // queue orders like move/attack/smart after finished.
                                        // All spell orders, though, like channeling will
                                        // be interrupted, and won't continue.
                                        // example orders: bearform/metamorphosis
        
            // Getters
            static method operator[] takes integer orderId returns integer
            static method GetType takes integer orderId returns integer
        
        // Example
            if OrderType[GetIssuedOrderId()] == OrderType.INSTANT then
                // innstant order
            endif
//! endnovjass
// ========== END API ==========

globals
    private constant integer OFFSET = 851900
endglobals

struct OrderType extends array
// used
    public static constant integer INSTANT      = 1
    public static constant integer QUEUE        = 2
 
// not used
    private static constant integer UNIT_TARGET           = 3
    private static constant integer POINT_TARGET          = 4
    private static constant integer UNIT_POINT_TARGET     = 5
 
    private static integer array Data
    public static method operator[] takes integer orderId returns integer
        return Data[orderId - OFFSET]
    endmethod
    public static method GetType takes integer orderId returns integer
        return Data[orderId - OFFSET]
    endmethod
 
    private static method onInit takes nothing returns nothing
 
        if (GetExpiredTimer() == null) then
            call TimerStart(CreateTimer(), 0, false, function thistype.onInit)
            return
        endif
        /*
            ==== no target - instant ====
        */
    
        set Data[ORDER_berserk - OFFSET] = INSTANT
    
        set Data[ORDER_defend - OFFSET] = INSTANT
        set Data[ORDER_undefend - OFFSET] = INSTANT
    
        set Data[ORDER_divineshield - OFFSET] = INSTANT
        set Data[ORDER_undivineshield - OFFSET] = INSTANT
    
        set Data[ORDER_windwalk - OFFSET] = INSTANT
        set Data[ORDER_unwindwalk - OFFSET] = INSTANT
    
        set Data[ORDER_manashieldon - OFFSET] = INSTANT
        set Data[ORDER_manashieldoff - OFFSET] = INSTANT
    
        set Data[ORDER_autodispel - OFFSET] = INSTANT
        set Data[ORDER_autodispeloff - OFFSET] = INSTANT
    
        set Data[ORDER_immolation - OFFSET] = INSTANT
        set Data[ORDER_unimmolation - OFFSET] = INSTANT
    
        set Data[ORDER_barkskinon - OFFSET] = INSTANT
        set Data[ORDER_barkskinoff - OFFSET] = INSTANT
    
        set Data[ORDER_blackarrowon - OFFSET] = INSTANT
        set Data[ORDER_blackarrowoff - OFFSET] = INSTANT
    
        set Data[ORDER_bloodluston - OFFSET] = INSTANT
        set Data[ORDER_bloodlustoff - OFFSET] = INSTANT
    
        set Data[ORDER_carrionscarabsinstant - OFFSET] = INSTANT //?
        set Data[ORDER_carrionscarabson - OFFSET] = INSTANT
        set Data[ORDER_carrionscarabsoff - OFFSET] = INSTANT
    
        set Data[ORDER_creephealon - OFFSET] = INSTANT
        set Data[ORDER_creephealoff - OFFSET] = INSTANT
    
        set Data[ORDER_ensnareon - OFFSET] = INSTANT
        set Data[ORDER_ensnareoff - OFFSET] = INSTANT
    
        set Data[ORDER_faeriefireon - OFFSET] = INSTANT
        set Data[ORDER_faeriefireoff - OFFSET] = INSTANT
    
        set Data[ORDER_flamingarrows - OFFSET] = INSTANT
        set Data[ORDER_unflamingarrows - OFFSET] = INSTANT
    
        set Data[ORDER_flamingattack - OFFSET] = INSTANT
        set Data[ORDER_unflamingattack - OFFSET] = INSTANT
    
        set Data[ORDER_frenzyon - OFFSET] = INSTANT
        set Data[ORDER_frenzyoff - OFFSET] = INSTANT
    
        set Data[ORDER_frostarmoron - OFFSET] = INSTANT
        set Data[ORDER_frostarmoroff - OFFSET] = INSTANT
    
        set Data[ORDER_healoff - OFFSET] = INSTANT
        set Data[ORDER_healon - OFFSET] = INSTANT
    
        set Data[ORDER_incineratearrowoff - OFFSET] = INSTANT
        set Data[ORDER_incineratearrowon - OFFSET] = INSTANT
    
        set Data[ORDER_innerfireon - OFFSET] = INSTANT
        set Data[ORDER_innerfireoff - OFFSET] = INSTANT
    
        set Data[ORDER_instant - OFFSET] = INSTANT //?
    
        set Data[ORDER_manaflareon - OFFSET] = INSTANT
        set Data[ORDER_manaflareoff - OFFSET] = INSTANT
    
        set Data[ORDER_parasiteon - OFFSET] = INSTANT
        set Data[ORDER_parasiteoff - OFFSET] = INSTANT
    
        set Data[ORDER_phaseshiftinstant - OFFSET] = INSTANT //?
        set Data[ORDER_phaseshiftoff - OFFSET] = INSTANT
        set Data[ORDER_phaseshifton - OFFSET] = INSTANT
    
        set Data[ORDER_raisedeadon - OFFSET] = INSTANT
        set Data[ORDER_raisedeadoff - OFFSET] = INSTANT
    
        set Data[ORDER_rechargeon - OFFSET] = INSTANT
        set Data[ORDER_rechargeoff - OFFSET] = INSTANT
    
        set Data[ORDER_renewon - OFFSET] = INSTANT
        set Data[ORDER_renewoff - OFFSET] = INSTANT
    
        set Data[ORDER_repairon - OFFSET] = INSTANT
        set Data[ORDER_repairoff - OFFSET] = INSTANT
    
        set Data[ORDER_replenishlifeon - OFFSET] = INSTANT
        set Data[ORDER_replenishlifeoff - OFFSET] = INSTANT
    
        set Data[ORDER_replenishon - OFFSET] = INSTANT
        set Data[ORDER_replenishoff - OFFSET] = INSTANT
    
        set Data[ORDER_restorationon - OFFSET] = INSTANT
        set Data[ORDER_restorationoff - OFFSET] = INSTANT
    
        set Data[ORDER_selfdestructon - OFFSET] = INSTANT
        set Data[ORDER_selfdestructoff - OFFSET] = INSTANT
    
        set Data[ORDER_slowon - OFFSET] = INSTANT
        set Data[ORDER_slowoff - OFFSET] = INSTANT
    
        set Data[ORDER_spellstealon - OFFSET] = INSTANT
        set Data[ORDER_spellstealoff - OFFSET] = INSTANT
    
        set Data[ORDER_poisonarrows - OFFSET] = INSTANT
        set Data[ORDER_unpoisonarrows - OFFSET] = INSTANT
    
        set Data[ORDER_vengeanceoff - OFFSET] = INSTANT
        set Data[ORDER_vengeanceon - OFFSET] = INSTANT
    
        set Data[ORDER_webon - OFFSET] = INSTANT
        set Data[ORDER_weboff - OFFSET] = INSTANT
    
        set Data[ORDER_whirlwind - OFFSET] = INSTANT
    
        set Data[ORDER_moveslot1 - OFFSET] = INSTANT
        set Data[ORDER_moveslot2 - OFFSET] = INSTANT
        set Data[ORDER_moveslot3 - OFFSET] = INSTANT
        set Data[ORDER_moveslot4 - OFFSET] = INSTANT
        set Data[ORDER_moveslot5 - OFFSET] = INSTANT
        set Data[ORDER_moveslot6 - OFFSET] = INSTANT
        set Data[ORDER_useslot1 - OFFSET] = INSTANT
        set Data[ORDER_useslot2 - OFFSET] = INSTANT
        set Data[ORDER_useslot3 - OFFSET] = INSTANT
        set Data[ORDER_useslot4 - OFFSET] = INSTANT
        set Data[ORDER_useslot5 - OFFSET] = INSTANT
        set Data[ORDER_useslot6 - OFFSET] = INSTANT
    
        // ????
        set Data[ORDER_instant1 - OFFSET] = INSTANT
        set Data[ORDER_instant2 - OFFSET] = INSTANT
        set Data[ORDER_instant3 - OFFSET] = INSTANT
        set Data[ORDER_instant4 - OFFSET] = INSTANT
    
        /*
            ==== no target - queue ====
        */
    
        set Data[ORDER_avatar - OFFSET] = QUEUE
        set Data[ORDER_unavatar - OFFSET] = QUEUE
    
        set Data[ORDER_battleroar - OFFSET] = QUEUE
    
        set Data[ORDER_bearform - OFFSET] = QUEUE
        set Data[ORDER_unbearform - OFFSET] = QUEUE
    
        set Data[ORDER_etherealform - OFFSET] = QUEUE
        set Data[ORDER_unetherealform - OFFSET] = QUEUE
    
        set Data[ORDER_metamorphosis - OFFSET] = QUEUE
    
        set Data[ORDER_ravenform - OFFSET] = QUEUE
        set Data[ORDER_unravenform - OFFSET] = QUEUE
    
        set Data[ORDER_roar - OFFSET] = QUEUE
    
        set Data[ORDER_robogoblin - OFFSET] = QUEUE
        set Data[ORDER_unrobogoblin - OFFSET] = QUEUE
    
        set Data[ORDER_stoneform - OFFSET] = QUEUE
        set Data[ORDER_unstoneform - OFFSET] = QUEUE
    
        set Data[ORDER_stomp - OFFSET] = QUEUE
    
        set Data[ORDER_thunderclap - OFFSET] = QUEUE
  
    endmethod

endstruct
endlibrary
 
Last edited:
Status
Not open for further replies.
Top