mirror of
https://github.com/Relintai/entity_spell_system.git
synced 2025-02-22 17:18:12 +01:00
192 lines
7.1 KiB
C++
192 lines
7.1 KiB
C++
#pragma once
|
|
#include <System/System.h>
|
|
#include "BaseAuraScript.h"
|
|
#include "DamagePipelineData.h"
|
|
#include "Aura.h"
|
|
#include "Entity.h"
|
|
#include "WorldEntity.h"
|
|
#include "AuraData.h"
|
|
#include "MonoBehaviour.h"
|
|
#include "GameObject.h"
|
|
#include "Time.h"
|
|
#include "Debug.h"
|
|
#include "AuraComponent.h"
|
|
#include "DiminishingReturnAuraData.h"
|
|
#include "DamageCountAuraData.h"
|
|
#include "BaseAuraComponent.h"
|
|
#include "DamageAuraData.h"
|
|
#include "HealAuraData.h"
|
|
#include "ShieldAuraData.h"
|
|
#include "StateData.h"
|
|
#include "AuraDamageData.h"
|
|
#include "UnityEngine.h"
|
|
#include "PlayerData.h"
|
|
#include "Stats.h"
|
|
#include "PercentStat.h"
|
|
#include "AuraHealData.h"
|
|
#include "AuraAbsorbData.h"
|
|
#include "SpellType.h"
|
|
#include "EffectPoints.h"
|
|
#include "Quaternion.h"
|
|
#include "Transform.h"
|
|
#include "IEffectPointGetter.h"
|
|
#include "Vector3.h"
|
|
#include "EffectAuraIdAttribute.h"
|
|
#include "Auras.h"
|
|
#include "Mathf.h"
|
|
#include "GenericAura.h"
|
|
|
|
using namespace BS::Player;
|
|
using namespace UnityEngine;
|
|
using namespace BS::AurasNS::Generic;
|
|
using namespace System;
|
|
//Forward Declaration
|
|
class GenericAura;
|
|
|
|
class AuraScript : public virtual BaseAuraScript, public virtual Object{
|
|
public:
|
|
int DIMINISHING_RETURN_ROOT_AURA_ID;
|
|
public:
|
|
float DIMINISHING_RETURN_TIME;
|
|
public:
|
|
DamagePipelineData* damagePipelineData;
|
|
public:
|
|
AuraScript(Aura* aura);
|
|
public:
|
|
virtual void Apply(Entity* caster, Entity* target, float spellScale);
|
|
public:
|
|
virtual bool AuraUpdate(Entity* target, AuraData* data);
|
|
public:
|
|
virtual void DeApply(Entity* target, AuraData* data);
|
|
public:
|
|
virtual void OnDamageReceive(Entity* caster, Entity* target, MonoBehaviour* spell, AuraData* aura, int damage);
|
|
public:
|
|
virtual void OnHit(Entity* caster, Entity* target, MonoBehaviour* spell, AuraData* aura, int damage);
|
|
public:
|
|
virtual void OnDispell(Entity* caster);
|
|
public:
|
|
virtual void OnRemove(Entity* caster);
|
|
public:
|
|
virtual void COnAdded(Entity* target, Aura* data, AuraData* aura);
|
|
public:
|
|
virtual void COnRemoved(Entity* target, Aura* data);
|
|
public:
|
|
virtual void COnRefresh(Entity* target, GameObject* data, AuraData* aura);
|
|
public:
|
|
virtual void Apply(WorldEntity* caster, WorldEntity* target, float spellScale);
|
|
public:
|
|
virtual bool AuraUpdate(WorldEntity* target, AuraData* data);
|
|
public:
|
|
virtual void DeApply(WorldEntity* target, AuraData* data);
|
|
public:
|
|
virtual void OnDamageReceive(WorldEntity* caster, WorldEntity* target, MonoBehaviour* spell, AuraData* aura, int damage);
|
|
public:
|
|
virtual void OnHit(WorldEntity* caster, WorldEntity* target, MonoBehaviour* spell, AuraData* aura, int damage);
|
|
public:
|
|
virtual void OnDispell(WorldEntity* caster);
|
|
public:
|
|
virtual void OnRemove(WorldEntity* caster);
|
|
public:
|
|
virtual void COnAdded(WorldEntity* target, Aura* data, AuraData* aura);
|
|
public:
|
|
virtual void COnRemoved(WorldEntity* target, Aura* data);
|
|
public:
|
|
virtual void COnRefresh(WorldEntity* target, GameObject* data, AuraData* aura);
|
|
public:
|
|
void RemoveAura(WorldEntity* caster);
|
|
public:
|
|
bool ShouldApplyModifiers(WorldEntity* target);
|
|
public:
|
|
bool BasicAuraUpdate(WorldEntity* target, AuraData* data);
|
|
public:
|
|
bool ShouldApplyModifiers(WorldEntity* target, float refreshTo);
|
|
public:
|
|
bool ShouldApplyModifiers(WorldEntity* target, float refreshTo, WorldEntity* caster, float spellScale);
|
|
public:
|
|
bool ShouldRemoveModifiers(WorldEntity* target);
|
|
public:
|
|
void RefreshDamageCountAuraDiminished(WorldEntity* target, float refreshTo, WorldEntity* caster, DiminishingReturnAuraData::DiminishingReturnCategory diminsihingType, DamageCountAuraData* aura);
|
|
public:
|
|
void AddAuraDataToTarget(WorldEntity* target, AuraData* data);
|
|
public:
|
|
void AddAuraDataToTarget(WorldEntity* target, WorldEntity* caster, float duration, float spellScale);
|
|
public:
|
|
void AddOrRefreshDamageAuraDataToTarget(WorldEntity* target, WorldEntity* caster, float spellScale, float duration, float tick, int damage);
|
|
public:
|
|
void AddOrRefreshHealAuraDataToTarget(WorldEntity* target, WorldEntity* caster, float spellScale, float duration, float tick, int heal);
|
|
public:
|
|
void AddOrRefreshShieldAuraDataToTarget(WorldEntity* target, WorldEntity* caster, float spellScale, float duration, int absorb);
|
|
public:
|
|
void AddOrRefreshDiminishingReturnAura(WorldEntity* target, DiminishingReturnAuraData::DiminishingReturnCategory diminishingCategory);
|
|
public:
|
|
void AddStatModifier(WorldEntity* target, int stat, float maxMod, float percentMod);
|
|
public:
|
|
void RemoveStatModifier(WorldEntity* target, int stat);
|
|
public:
|
|
void AddState(WorldEntity* target, StateData::StateType state);
|
|
public:
|
|
void RemoveState(WorldEntity* target, StateData::StateType state);
|
|
public:
|
|
void RemovethisAura(WorldEntity* target);
|
|
public:
|
|
AuraData* TargetHasCastersAura(WorldEntity* target, WorldEntity* caster);
|
|
public:
|
|
AuraData* TargetHasAura(WorldEntity* target);
|
|
public:
|
|
int CalculateDamage(WorldEntity* caster, WorldEntity* target, float spellScale);
|
|
public:
|
|
int CalculateHeal(WorldEntity* caster, WorldEntity* target, float spellScale);
|
|
public:
|
|
int CalculateAbsorb(WorldEntity* caster, WorldEntity* target, float spellScale);
|
|
public:
|
|
void UpdateDamageCountAura(WorldEntity* target, AuraData* aura, int damage, float breakHealthPercent);
|
|
public:
|
|
bool UpdateDamageAura(WorldEntity* target, AuraData* data);
|
|
public:
|
|
bool UpdateDamageAuraTickBool(WorldEntity* target, AuraData* data);
|
|
public:
|
|
bool UpdateHealAura(WorldEntity* target, AuraData* data);
|
|
public:
|
|
void AbsorbPOnBeforeDamage(DamagePipelineData* data, AuraData* aura);
|
|
public:
|
|
void DealDamage(WorldEntity* target, DamageAuraData* data);
|
|
public:
|
|
void DealDamage(WorldEntity* target, DamageAuraData* data, int damage);
|
|
public:
|
|
void DealDamage(WorldEntity* target, WorldEntity* caster, int damage);
|
|
public:
|
|
void DealDamageWithoutOnHit(WorldEntity* target, WorldEntity* caster, int damage);
|
|
public:
|
|
void Heal(WorldEntity* target, HealAuraData* data);
|
|
public:
|
|
void Heal(WorldEntity* target, HealAuraData* data, int heal);
|
|
public:
|
|
void Heal(WorldEntity* target, AuraData* data, int heal);
|
|
public:
|
|
DiminishingReturnAuraData* GetDiminishingReturnAuraDataFor(WorldEntity* target, DiminishingReturnAuraData::DiminishingReturnCategory type);
|
|
public:
|
|
float GetDiminishedTime(WorldEntity* target, DiminishingReturnAuraData::DiminishingReturnCategory diminsihingType, float time);
|
|
public:
|
|
void AddEffect(WorldEntity* player, EffectPoints bodyPart, Quaternion* rotation = );
|
|
public:
|
|
void AddEffect(WorldEntity* player, GameObject* effectPrefab, EffectPoints bodyPart, Quaternion* rotation = );
|
|
public:
|
|
void RemoveEffect(WorldEntity* player, EffectPoints bodyPart);
|
|
public:
|
|
void RemoveActiveGroupAuras(WorldEntity* target);
|
|
public:
|
|
float GetDiminishedTime(WorldEntity* target, DiminishingReturnAuraData* aura, float time);
|
|
public:
|
|
int GetAuraIdForDiminishingReturn(DiminishingReturnAuraData::DiminishingReturnCategory type);
|
|
public:
|
|
AuraData* getAuraData(WorldEntity* target, int pAuraId);
|
|
public:
|
|
void ApplyAura(int auraId, WorldEntity* caster, WorldEntity* target, float spellScale);
|
|
public:
|
|
bool IsZero(float x);
|
|
public:
|
|
static void InitFactory();
|
|
public:
|
|
static void SSCreateFor(Aura* aura);
|
|
};
|