#pragma once #include "../NPC.h" #include struct TradeItemInfo; class Bot : public NPC { public: Bot(); ~Bot(); int32 BotID; // DB id int32 BotIndex; // Bot id with its owner (player) bool IsBot() { return true; } void GiveItem(int32 item_id); void RemoveItem(Item* item); void TradeItemAdded(Item* item); void AddItemToTrade(int8 slot); bool CheckTradeItems(map* list); void FinishTrade(); void GetNewSpells(); map* GetBotSpells() { return &dd_spells; } bool ShowHelm; bool ShowCloak; bool CanTaunt; Entity* GetCombatTarget(); void SetCombatTarget(int32 target) { combat_target = target; } Spell* SelectSpellToCast(float distance); void MessageGroup(string msg); void SetRecast(Spell* spell, int32 time); bool ShouldMelee(); Spell* GetNextBuffSpell() { return GetBuffSpell(); } Spell* GetHealSpell(); Spell* GetRezSpell(); void SetMainTank(Entity* tank) { main_tank = tank; } void Camp(); void ChangeLevel(int16 old_level, int16 new_level); private: bool CanEquipItem(Item* item); bool IsSpellReady(Spell* spell); Spell* GetTauntSpell(); Spell* GetDetauntSpell(); Spell* GetHoTWardSpell(); Spell* GetDebuffSpell(); Spell* GetCombatBuffSpell(); Spell* GetDoTSpell(); Spell* GetDDSpell(); Spell* GetBuffSpell(); Spell* GetCureSpell(); int8 GetHealThreshold(); set trading_slots; int32 combat_target; Entity* main_tank; map bot_spells; map dd_spells; map dot_spells; map heal_spells; map hot_ward_spells; map debuff_spells; map buff_spells; map combat_buff_spells; map taunt_spells; map detaunt_spells; map rez_spells; map cure_spells; // First int32 = spell id (change to timer id later), second int32 is time the spell is available to cast again map recast_times; };