2019-11-08 17:45:43 +00:00
|
|
|
#ifndef CREATURELIB_SCRIPT_HPP
|
|
|
|
#define CREATURELIB_SCRIPT_HPP
|
|
|
|
|
2020-04-10 15:18:19 +00:00
|
|
|
#include <Arbutils/Collections/List.hpp>
|
2020-06-26 15:08:23 +00:00
|
|
|
#include <Arbutils/StringView.hpp>
|
2020-04-10 15:54:45 +00:00
|
|
|
#include "../../Library/EffectParameter.hpp"
|
2020-04-09 16:19:21 +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
|
|
|
public:
|
|
|
|
virtual ~Script() = default;
|
|
|
|
|
|
|
|
virtual void Stack(){};
|
2020-02-05 13:52:50 +00:00
|
|
|
virtual void OnRemove(){};
|
2019-11-08 17:45:43 +00:00
|
|
|
|
2020-06-26 15:08:23 +00:00
|
|
|
virtual const ArbUt::StringView& GetName() const noexcept = 0;
|
2019-11-09 11:15:45 +00:00
|
|
|
|
2020-05-26 16:31:06 +00:00
|
|
|
virtual void OnInitialize(const ArbUt::List<CreatureLib::Library::EffectParameter*>& parameters){};
|
2019-11-10 13:45:07 +00:00
|
|
|
virtual void OnBeforeTurn(const BaseTurnChoice* choice){};
|
2019-11-23 10:53:00 +00:00
|
|
|
|
2020-06-20 17:44:41 +00:00
|
|
|
virtual void ChangePriority(AttackTurnChoice* choice, int8_t* priority){};
|
2020-06-26 15:08:23 +00:00
|
|
|
virtual void ChangeAttack(AttackTurnChoice* choice, ArbUt::StringView* outAttack){};
|
2020-02-03 17:27:39 +00:00
|
|
|
virtual void PreventAttack(ExecutingAttack* attack, bool* outResult){};
|
|
|
|
virtual void FailAttack(ExecutingAttack* attack, bool* outFailed){};
|
2020-02-03 18:11:44 +00:00
|
|
|
virtual void StopBeforeAttack(ExecutingAttack* attack, bool* outResult){};
|
2019-11-24 09:34:42 +00:00
|
|
|
virtual void OnBeforeAttack(ExecutingAttack* attack){};
|
2019-11-23 10:53:00 +00:00
|
|
|
|
2020-02-03 17:27:39 +00:00
|
|
|
virtual void FailIncomingAttack(ExecutingAttack* attack, Creature* target, bool* outResult){};
|
|
|
|
virtual void IsInvulnerable(ExecutingAttack* attack, Creature* target, bool* outResult){};
|
2019-11-09 11:15:45 +00:00
|
|
|
virtual void OnAttackMiss(ExecutingAttack* attack, Creature* target){};
|
2020-02-03 17:27:39 +00:00
|
|
|
virtual void ChangeAttackType(ExecutingAttack* attack, Creature* target, uint8_t hitNumber, uint8_t* outType){};
|
2020-04-19 11:07:28 +00:00
|
|
|
virtual void ChangeEffectiveness(ExecutingAttack* attack, Creature* target, uint8_t hitNumber,
|
|
|
|
float* effectiveness){};
|
2020-02-19 09:12:36 +00:00
|
|
|
|
|
|
|
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){};
|
2020-03-25 18:47:37 +00:00
|
|
|
virtual void OverrideDamage(ExecutingAttack* attack, Creature* target, uint8_t hitIndex, uint32_t* damage){};
|
2020-02-19 09:12:36 +00:00
|
|
|
|
2019-11-28 11:55:22 +00:00
|
|
|
virtual void PreventSecondaryEffects(const ExecutingAttack* attack, Creature* target, uint8_t hitNumber,
|
2020-02-03 17:27:39 +00:00
|
|
|
bool* outResult){};
|
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
|
|
|
|
2020-02-03 17:27:39 +00:00
|
|
|
virtual void PreventSelfSwitch(const SwitchTurnChoice* choice, bool* outResult){};
|
2020-02-16 14:08:22 +00:00
|
|
|
|
|
|
|
virtual void ModifyEffectChance(const ExecutingAttack* attack, Creature* target, float* chance){};
|
|
|
|
virtual void ModifyIncomingEffectChance(const ExecutingAttack* attack, Creature* target, float* chance){};
|
2019-11-08 17:45:43 +00:00
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2019-11-28 11:55:22 +00:00
|
|
|
#endif // CREATURELIB_SCRIPT_HPP
|