2019-11-08 17:45:43 +00:00
|
|
|
#ifndef CREATURELIB_SCRIPT_HPP
|
|
|
|
#define CREATURELIB_SCRIPT_HPP
|
|
|
|
|
|
|
|
#include <any>
|
|
|
|
#include <string>
|
|
|
|
#include <utility>
|
|
|
|
#include <vector>
|
2019-12-21 13:32:45 +00:00
|
|
|
#include "../../Library/CreatureData/CreatureSpecies.hpp"
|
2019-11-08 17:45:43 +00:00
|
|
|
|
2019-11-28 11:55:22 +00:00
|
|
|
namespace CreatureLib::Battling {
|
2019-11-10 13:32:05 +00:00
|
|
|
class BaseTurnChoice;
|
2019-11-23 10:53:00 +00:00
|
|
|
class AttackTurnChoice;
|
2019-12-14 11:15:30 +00:00
|
|
|
class SwitchTurnChoice;
|
2019-11-09 11:15:45 +00:00
|
|
|
class ExecutingAttack;
|
|
|
|
class Creature;
|
|
|
|
|
2019-11-28 11:55:22 +00:00
|
|
|
class Script {
|
2019-11-08 17:45:43 +00:00
|
|
|
const std::string _name;
|
|
|
|
|
|
|
|
public:
|
2019-11-28 11:55:22 +00:00
|
|
|
explicit Script(std::string name) : _name(std::move(name)) {}
|
2019-11-08 17:45:43 +00:00
|
|
|
virtual ~Script() = default;
|
|
|
|
|
|
|
|
virtual void Stack(){};
|
|
|
|
|
2019-11-28 11:55:22 +00:00
|
|
|
const std::string& GetName() { return _name; }
|
2019-11-09 11:15:45 +00:00
|
|
|
|
2019-12-21 13:32:45 +00:00
|
|
|
virtual void OverrideDisplaySpecies(Creature* creature,
|
|
|
|
const CreatureLib::Library::CreatureSpecies** species){};
|
|
|
|
virtual void OverrideDisplayVariant(Creature* creature, const CreatureLib::Library::SpeciesVariant** variant){};
|
|
|
|
|
2019-11-10 13:45:07 +00:00
|
|
|
virtual void OnBeforeTurn(const BaseTurnChoice* choice){};
|
2019-11-23 10:53:00 +00:00
|
|
|
|
|
|
|
virtual void ChangeAttack(AttackTurnChoice* choice, std::string& attack){};
|
2019-11-28 11:55:22 +00:00
|
|
|
virtual void PreventAttack(ExecutingAttack* attack, bool& result){};
|
2019-11-24 09:34:42 +00:00
|
|
|
virtual void FailAttack(ExecutingAttack* attack, bool& failed){};
|
|
|
|
virtual void StopBeforeAttack(ExecutingAttack* attack){};
|
|
|
|
virtual void OnBeforeAttack(ExecutingAttack* attack){};
|
2019-11-23 10:53:00 +00:00
|
|
|
|
2019-11-09 11:55:48 +00:00
|
|
|
virtual void FailIncomingAttack(ExecutingAttack* attack, Creature* target, bool& result){};
|
2019-11-28 11:55:22 +00:00
|
|
|
virtual void IsInvulnerable(ExecutingAttack* attack, Creature* target, bool& result){};
|
2019-11-09 11:15:45 +00:00
|
|
|
virtual void OnAttackMiss(ExecutingAttack* attack, Creature* target){};
|
2019-11-09 11:55:48 +00:00
|
|
|
virtual void ChangeAttackType(ExecutingAttack* attack, Creature* target, uint8_t hitNumber, uint8_t& type){};
|
|
|
|
virtual void OnStatusMove(const ExecutingAttack* attack, Creature* target, uint8_t hitNumber){};
|
2019-11-28 11:55:22 +00:00
|
|
|
virtual void PreventSecondaryEffects(const ExecutingAttack* attack, Creature* target, uint8_t hitNumber,
|
|
|
|
bool& result){};
|
2019-11-09 11:55:48 +00:00
|
|
|
virtual void OnSecondaryEffect(const ExecutingAttack* attack, Creature* target, uint8_t hitNumber){};
|
|
|
|
|
2019-11-09 11:57:12 +00:00
|
|
|
virtual void OnAfterHits(const ExecutingAttack* attack, Creature* target){};
|
2019-12-14 11:15:30 +00:00
|
|
|
|
|
|
|
virtual void PreventSelfSwitch(const SwitchTurnChoice* choice, bool& result){};
|
2019-11-08 17:45:43 +00:00
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2019-11-28 11:55:22 +00:00
|
|
|
#endif // CREATURELIB_SCRIPT_HPP
|