- Joined
- Sep 6, 2013
- Messages
- 6,742
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
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: