class CDOTAPlayer;
class C_DOTA_BaseNPC;
class Vector;
enum DotaUnitOrder {
DOTA_UNIT_ORDER_NONE,
DOTA_UNIT_ORDER_MOVE_TO_POSITION,
DOTA_UNIT_ORDER_MOVE_TO_TARGET,
DOTA_UNIT_ORDER_ATTACK_MOVE,
DOTA_UNIT_ORDER_ATTACK_TARGET,
DOTA_UNIT_ORDER_CAST_POSITION,
DOTA_UNIT_ORDER_CAST_TARGET,
DOTA_UNIT_ORDER_CAST_TARGET_TREE,
DOTA_UNIT_ORDER_CAST_NO_TARGET,
DOTA_UNIT_ORDER_CAST_TOGGLE,
DOTA_UNIT_ORDER_HOLD_POSITION,
DOTA_UNIT_ORDER_TRAIN_ABILITY,
DOTA_UNIT_ORDER_DROP_ITEM,
DOTA_UNIT_ORDER_GIVE_ITEM,
DOTA_UNIT_ORDER_PICKUP_ITEM,
DOTA_UNIT_ORDER_PICKUP_RUNE,
DOTA_UNIT_ORDER_PURCHASE_ITEM,
DOTA_UNIT_ORDER_SELL_ITEM,
DOTA_UNIT_ORDER_DISASSEMBLE_ITEM,
DOTA_UNIT_ORDER_MOVE_ITEM,
DOTA_UNIT_ORDER_CAST_TOGGLE_AUTO,
DOTA_UNIT_ORDER_STOP,
DOTA_UNIT_ORDER_TAUNT,
DOTA_UNIT_ORDER_BUYBACK,
DOTA_UNIT_ORDER_GLYPH,
DOTA_UNIT_ORDER_EJECT_ITEM_FROM_STASH,
DOTA_UNIT_ORDER_CAST_RUNE,
DOTA_UNIT_ORDER_PING_ABILITY,
DOTA_UNIT_ORDER_MOVE_TO_DIRECTION,
ForceDword = 0xFFFFFFFF
};
enum PlayerOrderIssuer {
DOTA_ORDER_ISSUER_SELECTED_UNITS,
DOTA_ORDER_ISSUER_CURRENT_UNIT_ONLY,
DOTA_ORDER_ISSUER_HERO_ONLY,
DOTA_ORDER_ISSUER_PASSED_UNIT_ONLY,
ForceDword = 0xFFFFFFFF
};
enum OrderQueueBehavior {
DOTA_ORDER_QUEUE_DEFAULT,
DOTA_ORDER_QUEUE_NEVER,
DOTA_ORDER_QUEUE_ALWAYS,
ForceDword = 0xFFFFFFFF
};
typedef void (__fastcall * pPrepareUnitOrders)(
CDOTAPlayer* pPlayer,
DotaUnitOrder Order,
int TargetIndex,
Vector* pMovePos,
int AbilityIndex,
PlayerOrderIssuer,
C_DOTA_BaseNPC* pIssuer,
bool bQueue,
OrderQueueBehavior QueueBehavior,
bool bShowEffects);