Files
mod-playerbots/src/strategy/triggers/RpgTriggers.h
2024-08-04 10:23:36 +08:00

215 lines
5.2 KiB
C++

/*
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license, you may redistribute it
* and/or modify it under version 2 of the License, or (at your option), any later version.
*/
#ifndef _PLAYERBOT_RPGTRIGGERS_H
#define _PLAYERBOT_RPGTRIGGERS_H
#include "Trigger.h"
class Event;
class GuidPosition;
class PlayerbotAI;
struct CreatureTemplate;
class NoRpgTargetTrigger : public Trigger
{
public:
NoRpgTargetTrigger(PlayerbotAI* botAI, std::string const name = "no rpg target", int checkInterval = 1)
: Trigger(botAI, name, checkInterval)
{
}
bool IsActive() override;
};
class HasRpgTargetTrigger : public NoRpgTargetTrigger
{
public:
HasRpgTargetTrigger(PlayerbotAI* botAI, std::string const name = "has rpg target", int checkInterval = 1)
: NoRpgTargetTrigger(botAI, name, checkInterval)
{
}
bool IsActive() override;
};
class FarFromRpgTargetTrigger : public NoRpgTargetTrigger
{
public:
FarFromRpgTargetTrigger(PlayerbotAI* botAI, std::string const name = "far from rpg target", int checkInterval = 1)
: NoRpgTargetTrigger(botAI, name, checkInterval)
{
}
bool IsActive() override;
};
class NearRpgTargetTrigger : public FarFromRpgTargetTrigger
{
public:
NearRpgTargetTrigger(PlayerbotAI* botAI, std::string const name = "near rpg target", int checkInterval = 1)
: FarFromRpgTargetTrigger(botAI, name, checkInterval)
{
}
bool IsActive() override;
};
// Sub actions:
class RpgTrigger : public FarFromRpgTargetTrigger
{
public:
RpgTrigger(PlayerbotAI* botAI, std::string const name = "sub rpg", int checkInterval = 2)
: FarFromRpgTargetTrigger(botAI, name, checkInterval)
{
}
GuidPosition getGuidP();
bool IsActive() override;
Event Check() override;
};
class RpgTaxiTrigger : public RpgTrigger
{
public:
RpgTaxiTrigger(PlayerbotAI* botAI, std::string const name = "rpg taxi") : RpgTrigger(botAI, name) {}
bool IsActive() override;
};
class RpgDiscoverTrigger : public RpgTrigger
{
public:
RpgDiscoverTrigger(PlayerbotAI* botAI, std::string const name = "rpg discover") : RpgTrigger(botAI, name) {}
bool IsActive() override;
};
class RpgStartQuestTrigger : public RpgTrigger
{
public:
RpgStartQuestTrigger(PlayerbotAI* botAI, std::string const name = "rpg start quest") : RpgTrigger(botAI, name) {}
bool IsActive() override;
};
class RpgEndQuestTrigger : public RpgTrigger
{
public:
RpgEndQuestTrigger(PlayerbotAI* botAI, std::string const name = "rpg end quest") : RpgTrigger(botAI, name) {}
bool IsActive() override;
};
class RpgBuyTrigger : public RpgTrigger
{
public:
RpgBuyTrigger(PlayerbotAI* botAI, std::string const name = "rpg buy") : RpgTrigger(botAI, name) {}
bool IsActive() override;
};
class RpgSellTrigger : public RpgTrigger
{
public:
RpgSellTrigger(PlayerbotAI* botAI, std::string const name = "rpg sell") : RpgTrigger(botAI, name) {}
bool IsActive() override;
};
class RpgRepairTrigger : public RpgTrigger
{
public:
RpgRepairTrigger(PlayerbotAI* botAI, std::string const name = "rpg repair") : RpgTrigger(botAI, name) {}
bool IsActive() override;
};
class RpgTrainTrigger : public RpgTrigger
{
public:
RpgTrainTrigger(PlayerbotAI* botAI, std::string const name = "rpg train") : RpgTrigger(botAI, name) {}
static bool IsTrainerOf(CreatureTemplate const* cInfo, Player* pPlayer);
bool IsActive() override;
};
class RpgHealTrigger : public RpgTrigger
{
public:
RpgHealTrigger(PlayerbotAI* botAI, std::string const name = "rpg heal") : RpgTrigger(botAI, name) {}
bool IsActive() override;
};
class RpgHomeBindTrigger : public RpgTrigger
{
public:
RpgHomeBindTrigger(PlayerbotAI* botAI, std::string const name = "rpg home bind") : RpgTrigger(botAI, name) {}
bool IsActive() override;
};
class RpgQueueBGTrigger : public RpgTrigger
{
public:
RpgQueueBGTrigger(PlayerbotAI* botAI, std::string const name = "rpg queue bg") : RpgTrigger(botAI, name) {}
bool IsActive() override;
};
class RpgBuyPetitionTrigger : public RpgTrigger
{
public:
RpgBuyPetitionTrigger(PlayerbotAI* botAI, std::string const name = "rpg buy petition") : RpgTrigger(botAI, name) {}
bool IsActive() override;
};
class RpgUseTrigger : public RpgTrigger
{
public:
RpgUseTrigger(PlayerbotAI* botAI, std::string const name = "rpg use") : RpgTrigger(botAI, name) {}
bool IsActive() override;
};
class RpgSpellTrigger : public RpgTrigger
{
public:
RpgSpellTrigger(PlayerbotAI* botAI, std::string const name = "rpg spell") : RpgTrigger(botAI, name) {}
bool IsActive() override;
};
class RpgCraftTrigger : public RpgTrigger
{
public:
RpgCraftTrigger(PlayerbotAI* botAI, std::string const name = "rpg craft") : RpgTrigger(botAI, name) {}
bool IsActive() override;
};
class RpgTradeUsefulTrigger : public RpgTrigger
{
public:
RpgTradeUsefulTrigger(PlayerbotAI* botAI, std::string const name = "rpg trade useful") : RpgTrigger(botAI, name) {}
bool IsActive() override;
};
class RpgDuelTrigger : public RpgTrigger
{
public:
RpgDuelTrigger(PlayerbotAI* botAI, std::string const name = "rpg duel") : RpgTrigger(botAI, name) {}
bool IsActive() override;
};
#endif