#ifndef RAID_GRUULSLAIRHELPERS_H
#define RAID_GRUULSLAIRHELPERS_H

#include "PlayerbotAI.h"
#include "RtiTargetValue.h"

namespace GruulsLairHelpers
{
	enum GruulsLairSpells
	{
		// High King Maulgar
		SPELL_WHIRLWIND  	 = 33238,

		// Krosh Firehand
		SPELL_SPELL_SHIELD   = 33054,

		// Hunter
		SPELL_MISDIRECTION   = 34477,

		// Warlock
		SPELL_BANISH     	 = 18647, // Rank 2

		// Gruul the Dragonkiller
		SPELL_GROUND_SLAM_1  = 33525,
		SPELL_GROUND_SLAM_2  = 39187,
	};

	enum GruulsLairNPCs
	{
		NPC_WILD_FEL_STALKER = 18847,
	};

	bool IsAnyOgreBossAlive(PlayerbotAI* botAI);
	void MarkTargetWithIcon(Player* bot, Unit* target, uint8 iconId);
	void MarkTargetWithSquare(Player* bot, Unit* target);
	void MarkTargetWithStar(Player* bot, Unit* target);
	void MarkTargetWithCircle(Player* bot, Unit* target);
	void MarkTargetWithDiamond(Player* bot, Unit* target);
	void MarkTargetWithTriangle(Player* bot, Unit* target);
	void SetRtiTarget(PlayerbotAI* botAI, const std::string& rtiName, Unit* target);
	bool IsKroshMageTank(PlayerbotAI* botAI, Player* bot);
	bool IsKigglerMoonkinTank(PlayerbotAI* botAI, Player* bot);
	bool IsPositionSafe(PlayerbotAI* botAI, Player* bot, Position pos);
	bool TryGetNewSafePosition(PlayerbotAI* botAI, Player* bot, Position& outPos);

	struct Location
	{
		float x, y, z;
	};

	namespace GruulsLairLocations
	{
		extern const Location MaulgarTankPosition;
		extern const Location OlmTankPosition;
		extern const Location BlindeyeTankPosition;
		extern const Location KroshTankPosition;
		extern const Location MaulgarRoomCenter;
		extern const Location GruulTankPosition;
	}
}

#endif
