Files
CreatureLib/src/Battling/ScriptHandling/Script.hpp
Deukhoofd 88eda6ef94
Some checks failed
continuous-integration/drone/push Build is failing
Update to new version of Arbutils.
2020-04-09 18:19:21 +02:00

68 lines
3.2 KiB
C++

#ifndef CREATURELIB_SCRIPT_HPP
#define CREATURELIB_SCRIPT_HPP
#include <Arbutils/ConstString.hpp>
#include <any>
#include <string>
#include <utility>
#include <vector>
using ConstString = Arbutils::CaseInsensitiveConstString;
namespace CreatureLib::Battling {
class BaseTurnChoice;
class AttackTurnChoice;
class SwitchTurnChoice;
class ExecutingAttack;
class Creature;
class Script {
public:
virtual ~Script() = default;
virtual void Stack(){};
virtual void OnRemove(){};
virtual const ConstString& GetName() const noexcept = 0;
virtual void OnBeforeTurn(const BaseTurnChoice* choice){};
virtual void ChangeAttack(AttackTurnChoice* choice, ConstString* outAttack){};
virtual void PreventAttack(ExecutingAttack* attack, bool* outResult){};
virtual void FailAttack(ExecutingAttack* attack, bool* outFailed){};
virtual void StopBeforeAttack(ExecutingAttack* attack, bool* outResult){};
virtual void OnBeforeAttack(ExecutingAttack* attack){};
virtual void FailIncomingAttack(ExecutingAttack* attack, Creature* target, bool* outResult){};
virtual void IsInvulnerable(ExecutingAttack* attack, Creature* target, bool* outResult){};
virtual void OnAttackMiss(ExecutingAttack* attack, Creature* target){};
virtual void ChangeAttackType(ExecutingAttack* attack, Creature* target, uint8_t hitNumber, uint8_t* outType){};
virtual void OverrideBasePower(ExecutingAttack* attack, Creature* target, uint8_t hitIndex,
uint8_t* basePower){};
virtual void ChangeDamageStatsUser(ExecutingAttack* attack, Creature* target, uint8_t hitIndex,
Creature** statsUser){};
virtual void BypassDefensiveStat(ExecutingAttack* attack, Creature* target, uint8_t hitIndex, bool* bypass){};
virtual void BypassOffensiveStat(ExecutingAttack* attack, Creature* target, uint8_t hitIndex, bool* bypass){};
virtual void ModifyStatModifier(ExecutingAttack* attack, Creature* target, uint8_t hitIndex, float* modifier){};
virtual void ModifyDamageModifier(ExecutingAttack* attack, Creature* target, uint8_t hitIndex,
float* modifier){};
virtual void OverrideDamage(ExecutingAttack* attack, Creature* target, uint8_t hitIndex, uint32_t* damage){};
virtual void OnStatusMove(const ExecutingAttack* attack, Creature* target, uint8_t hitNumber){};
virtual void PreventSecondaryEffects(const ExecutingAttack* attack, Creature* target, uint8_t hitNumber,
bool* outResult){};
virtual void OnSecondaryEffect(const ExecutingAttack* attack, Creature* target, uint8_t hitNumber){};
virtual void OnAfterHits(const ExecutingAttack* attack, Creature* target){};
virtual void PreventSelfSwitch(const SwitchTurnChoice* choice, bool* outResult){};
virtual void ModifyEffectChance(const ExecutingAttack* attack, Creature* target, float* chance){};
virtual void ModifyIncomingEffectChance(const ExecutingAttack* attack, Creature* target, float* chance){};
};
}
#endif // CREATURELIB_SCRIPT_HPP