mirror of
https://github.com/Relintai/entity_spell_system.git
synced 2025-02-22 17:18:12 +01:00
Removed the commented out transpiled code from aura.cpp.
This commit is contained in:
parent
70cb694a12
commit
df0aeb715f
628
data/aura.cpp
628
data/aura.cpp
@ -1575,631 +1575,3 @@ void Aura::_bind_methods() {
|
||||
BIND_CONSTANT(MAX_AURA_STATS);
|
||||
BIND_CONSTANT(MAX_TRIGGER_DATA);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
void AuraScript::RemoveAura(Entity* caster)
|
||||
{
|
||||
AuraComponent* auraComponent = caster->AuraComponent;
|
||||
AuraData* data = null;
|
||||
for (int i = 0; i < auraComponent->serverAuras->Count; i += 1) {
|
||||
if (auraComponent->serverAuras->GetData(i)->AuraId == this->auraId) {
|
||||
data = auraComponent->serverAuras->GetData(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
this->DeApply(caster, data);
|
||||
auraComponent->JustRemoveAura(this->auraId);
|
||||
}
|
||||
|
||||
bool AuraScript::ShouldApplyModifiers(Entity* target)
|
||||
{
|
||||
AuraComponent* auraComponent = target->AuraComponent;
|
||||
for (int i = 0; i < auraComponent->serverAuras->Count; i += 1) {
|
||||
if (auraComponent->serverAuras->GetData(i)->AuraId == this->auraId) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool AuraScript::BasicAuraUpdate(Entity* target, AuraData* data)
|
||||
{
|
||||
data->Remaining -= Time::deltaTime;
|
||||
if (data->Remaining <= (float)0) {
|
||||
data->Remaining = (float)0;
|
||||
this->DeApply(target, data);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool AuraScript::ShouldApplyModifiers(Entity* target, float refreshTo)
|
||||
{
|
||||
AuraComponent* auraComponent = target->AuraComponent;
|
||||
for (int i = 0; i < auraComponent->serverAuras->Count; i += 1) {
|
||||
if (auraComponent->serverAuras->GetData(i)->AuraId == this->auraId) {
|
||||
auraComponent->RefreshAura(this->auraId, refreshTo);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool AuraScript::ShouldApplyModifiers(Entity* target, float refreshTo, Entity* caster, float spellScale)
|
||||
{
|
||||
AuraComponent* auraComponent = target->AuraComponent;
|
||||
for (int i = 0; i < auraComponent->serverAuras->Count; i += 1) {
|
||||
if (auraComponent->serverAuras->GetData(i)->AuraId == this->auraId) {
|
||||
auraComponent->RefreshAura(this->auraId, refreshTo);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
this->AddAuraDataToTarget(target, caster, refreshTo, spellScale);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool AuraScript::ShouldRemoveModifiers(Entity* target)
|
||||
{
|
||||
AuraComponent* auraComponent = target->AuraComponent;
|
||||
int num = 0;
|
||||
for (int i = 0; i < auraComponent->serverAuras->Count; i += 1) {
|
||||
if (auraComponent->serverAuras->GetData(i)->AuraId == this->auraId) {
|
||||
num += 1;
|
||||
if (num > 1) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void AuraScript::RefreshDamageCountAuraDiminished(Entity* target, float refreshTo, Entity* caster, DiminishingReturnAuraData::DiminishingReturnCategory diminsihingType, DamageCountAuraData* aura)
|
||||
{
|
||||
int auraIdForDiminishingReturn = this->GetAuraIdForDiminishingReturn(diminsihingType);
|
||||
if (auraIdForDiminishingReturn == -1) {
|
||||
Debug::Log(*(new String("AuraScript:RefreshDamageCountAuraDiminished-> Auraid is -1 for a diminishing return aura! DiminishingType: ")) + diminsihingType->ToString());
|
||||
return;
|
||||
}
|
||||
AuraComponent* auraComponent = target->AuraComponent;
|
||||
AuraData* auraData = this->getAuraData(target, auraIdForDiminishingReturn);
|
||||
DiminishingReturnAuraData* aura2 = null;
|
||||
if (auraData != null) {
|
||||
if (!is_inst_of<DiminishingReturnAuraData*>(auraData)) {
|
||||
Debug::Log(*(new String("AuraScript:RefreshDamageCountAuraDiminished-> Auradata isn't DiminishingReturnAuraData! auraId:")) + BOX<int>(auraIdForDiminishingReturn));
|
||||
return;
|
||||
}
|
||||
auraComponent->RefreshAura(auraData->AuraId, (float)15);
|
||||
}
|
||||
else {
|
||||
this->ApplyAura(auraIdForDiminishingReturn, caster, target, (float)1);
|
||||
auraData = this->getAuraData(target, auraIdForDiminishingReturn);
|
||||
if (!is_inst_of<DiminishingReturnAuraData*>(auraData)) {
|
||||
Debug::Log(*(new String("AuraScript:RefreshDamageCountAuraDiminished-> Auradata isn't DiminishingReturnAuraData! auraId:")) + BOX<int>(auraIdForDiminishingReturn));
|
||||
return;
|
||||
}
|
||||
aura2 = (DiminishingReturnAuraData*)(auraData);
|
||||
}
|
||||
float diminishedTime = this->GetDiminishedTime(target, aura2, refreshTo);
|
||||
auraComponent->RefreshAura(auraData->AuraId, diminishedTime);
|
||||
}
|
||||
|
||||
void AuraScript::AddAuraDataToTarget(Entity* target, AuraData* data)
|
||||
{
|
||||
target->AuraComponent->AddAura(data);
|
||||
}
|
||||
|
||||
void AuraScript::AddAuraDataToTarget(Entity* target, Entity* caster, float duration, float spellScale)
|
||||
{
|
||||
BaseAuraComponent* arg_2D_0 = target->AuraComponent;
|
||||
AuraData* data = new AuraData(this->auraId, duration, caster, caster->PlayerData->GUID, this->aura->AuraGroup, spellScale);
|
||||
arg_2D_0->AddAura(data);
|
||||
}
|
||||
|
||||
void AuraScript::AddOrRefreshDamageAuraDataToTarget(Entity* target, Entity* caster, float spellScale, float duration, float tick, int damage)
|
||||
{
|
||||
AuraData* auraData = this->TargetHasCastersAura(target, caster);
|
||||
if (auraData == null) {
|
||||
DamageAuraData* data = new DamageAuraData(this->auraId, duration, caster, caster->PlayerData->GUID, this->aura->AuraGroup, spellScale, tick, damage);
|
||||
this->AddAuraDataToTarget(target, data);
|
||||
return;
|
||||
}
|
||||
BaseAuraComponent* arg_5F_0 = target->AuraComponent;
|
||||
DamageAuraData* damageAuraData = (DamageAuraData*)(*auraData);
|
||||
arg_5F_0->RefreshAura(damageAuraData->AuraId, (Entity*)(damageAuraData->Caster), duration);
|
||||
damageAuraData->Damage = damage;
|
||||
}
|
||||
|
||||
void AuraScript::AddOrRefreshHealAuraDataToTarget(Entity* target, Entity* caster, float spellScale, float duration, float tick, int heal)
|
||||
{
|
||||
AuraData* auraData = this->TargetHasCastersAura(target, caster);
|
||||
if (auraData == null) {
|
||||
HealAuraData* data = new HealAuraData(this->auraId, duration, caster, caster->PlayerData->GUID, this->aura->AuraGroup, spellScale, tick, heal);
|
||||
this->AddAuraDataToTarget(target, data);
|
||||
return;
|
||||
}
|
||||
BaseAuraComponent* arg_5F_0 = target->AuraComponent;
|
||||
HealAuraData* healAuraData = (HealAuraData*)(*auraData);
|
||||
arg_5F_0->RefreshAura(healAuraData->AuraId, (Entity*)(healAuraData->Caster), duration);
|
||||
healAuraData->Heal = heal;
|
||||
}
|
||||
|
||||
void AuraScript::AddOrRefreshShieldAuraDataToTarget(Entity* target, Entity* caster, float spellScale, float duration, int absorb)
|
||||
{
|
||||
AuraData* auraData = this->TargetHasAura(target);
|
||||
if (auraData == null) {
|
||||
ShieldAuraData* data = new ShieldAuraData(this->auraId, duration, caster, caster->PlayerData->GUID, this->aura->AuraGroup, spellScale, absorb);
|
||||
this->AddAuraDataToTarget(target, data);
|
||||
return;
|
||||
}
|
||||
BaseAuraComponent* arg_5C_0 = target->AuraComponent;
|
||||
ShieldAuraData* shieldAuraData = (ShieldAuraData*)(*auraData);
|
||||
arg_5C_0->RefreshAura(shieldAuraData->AuraId, (Entity*)(shieldAuraData->Caster), duration);
|
||||
shieldAuraData->RemainingAbsorb = absorb;
|
||||
}
|
||||
|
||||
void AuraScript::AddOrRefreshDiminishingReturnAura(Entity* target, DiminishingReturnAuraData::DiminishingReturnCategory diminishingCategory)
|
||||
{
|
||||
int auraIdForDiminishingReturn = this->GetAuraIdForDiminishingReturn(diminishingCategory);
|
||||
if (auraIdForDiminishingReturn == -1) {
|
||||
Debug::Log(*(new String("AuraScript:AddOrRefreshDiminishingReturnAura-> Auraid is -1 for a diminishing return aura! DiminishingType: ")) + diminishingCategory->ToString());
|
||||
return;
|
||||
}
|
||||
AuraData* auraData = this->getAuraData(target, auraIdForDiminishingReturn);
|
||||
if (auraData == null) {
|
||||
this->ApplyAura(auraIdForDiminishingReturn, target, target, (float)1);
|
||||
return;
|
||||
}
|
||||
if (!is_inst_of<DiminishingReturnAuraData*>(auraData)) {
|
||||
Debug::Log(*(new String("AuraScript:AddOrRefreshDiminishingReturnAura-> Auradata isn't DiminishingReturnAuraData! auraId:")) + BOX<int>(auraIdForDiminishingReturn));
|
||||
return;
|
||||
}
|
||||
DiminishingReturnAuraData* diminishingReturnAuraData = (DiminishingReturnAuraData*)(*auraData);
|
||||
target->AuraComponent->RefreshAura(diminishingReturnAuraData->AuraId, (float)15);
|
||||
}
|
||||
|
||||
void AuraScript::AddStatModifier(Entity* target, int stat, float maxMod, float percentMod)
|
||||
{
|
||||
target->Stats->GetSStatFromId(stat)->Modifiers->Add(this->auraId, maxMod, percentMod, true);
|
||||
}
|
||||
|
||||
void AuraScript::RemoveStatModifier(Entity* target, int stat)
|
||||
{
|
||||
target->Stats->GetSStatFromId(stat)->Modifiers->Remove(this->auraId, true);
|
||||
}
|
||||
|
||||
void AuraScript::AddState(Entity* target, StateData::StateType state)
|
||||
{
|
||||
target->StateComponent->AddState(this->auraId, state);
|
||||
}
|
||||
|
||||
void AuraScript::RemoveState(Entity* target, StateData::StateType state)
|
||||
{
|
||||
target->StateComponent->RemoveStateWithAuraId(this->auraId, state);
|
||||
}
|
||||
|
||||
void AuraScript::RemovethisAura(Entity* target)
|
||||
{
|
||||
BaseAuraComponent* arg_14_0 = target->AuraComponent;
|
||||
this->DeApply(target, null);
|
||||
arg_14_0->JustRemoveAura(this->auraId);
|
||||
}
|
||||
|
||||
AuraData* AuraScript::TargetHasCastersAura(Entity* target, Entity* caster)
|
||||
{
|
||||
AuraComponent* auraComponent = target->AuraComponent;
|
||||
for (int i = 0; i < auraComponent->serverAuras->Count; i += 1) {
|
||||
if ((auraComponent->serverAuras->GetData(i)->AuraId == this->auraId) && (auraComponent->serverAuras->GetData(i)->Caster == *caster)) {
|
||||
return auraComponent->serverAuras->GetData(i);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
AuraData* AuraScript::TargetHasAura(Entity* target)
|
||||
{
|
||||
AuraComponent* auraComponent = target->AuraComponent;
|
||||
for (int i = 0; i < auraComponent->serverAuras->Count; i += 1) {
|
||||
if (auraComponent->serverAuras->GetData(i)->AuraId == this->auraId) {
|
||||
return auraComponent->serverAuras->GetData(i);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
int AuraScript::CalculateDamage(Entity* caster, Entity* target, float spellScale)
|
||||
{
|
||||
AuraDamageData* auraDamageData = this->aura->AuraDamageData;
|
||||
float arg_24_0 = (float)(UnityEngine::Random::Range(auraDamageData->Min, auraDamageData->Max));
|
||||
PlayerData* playerData = caster->PlayerData;
|
||||
float arg_4D_0 = (float)((int)((arg_24_0 * this->aura->GetDamageScaleForLevel(playerData->Level)) * spellScale));
|
||||
Stats* expr_40 = caster->Stats;
|
||||
PercentStat* sMeleeDamage = expr_40->SMeleeDamage;
|
||||
PercentStat* sDamageTaken = expr_40->SDamageTaken;
|
||||
return (int)((arg_4D_0 * (sMeleeDamage->ModPercent / (float)100)) * (sDamageTaken->ModPercent / (float)100));
|
||||
}
|
||||
|
||||
int AuraScript::CalculateHeal(Entity* caster, Entity* target, float spellScale)
|
||||
{
|
||||
AuraHealData* auraHealData = this->aura->AuraHealData;
|
||||
float arg_24_0 = (float)(UnityEngine::Random::Range(auraHealData->Min, auraHealData->Max));
|
||||
PlayerData* playerData = caster->PlayerData;
|
||||
float arg_46_0 = (float)((int)((arg_24_0 * this->aura->GetHealScaleForLevel(playerData->Level)) * spellScale));
|
||||
PercentStat* sSpellDamage = caster->Stats->SSpellDamage;
|
||||
return (int)(arg_46_0 * (sSpellDamage->ModPercent / (float)100));
|
||||
}
|
||||
|
||||
int AuraScript::CalculateAbsorb(Entity* caster, Entity* target, float spellScale)
|
||||
{
|
||||
AuraAbsorbData* auraAbsorbData = this->aura->AuraAbsorbData;
|
||||
float arg_24_0 = (float)(UnityEngine::Random::Range(auraAbsorbData->min, auraAbsorbData->max));
|
||||
PlayerData* playerData = caster->PlayerData;
|
||||
float arg_46_0 = (float)((int)((arg_24_0 * this->aura->GetAbsorbScaleForLevel(playerData->Level)) * spellScale));
|
||||
PercentStat* sSpellDamage = caster->Stats->SSpellDamage;
|
||||
return (int)(arg_46_0 * (sSpellDamage->ModPercent / (float)100));
|
||||
}
|
||||
|
||||
void AuraScript::UpdateDamageCountAura(Entity* target, AuraData* aura, int damage, float breakHealthPercent)
|
||||
{
|
||||
DamageCountAuraData* expr_06 = (DamageCountAuraData*)(*aura);
|
||||
expr_06->DamageTaken += damage;
|
||||
Stats* stats = target->Stats;
|
||||
if ((float)(expr_06->DamageTaken) >= (stats->SHealth->Max * (float)0.3)) {
|
||||
this->RemovethisAura(target);
|
||||
}
|
||||
}
|
||||
|
||||
bool AuraScript::UpdateDamageAura(Entity* target, AuraData* data)
|
||||
{
|
||||
DamageAuraData* damageAuraData = (DamageAuraData*)(*data);
|
||||
DamageAuraData* expr_08 = damageAuraData;
|
||||
expr_08->TimeSinceLastTick += Time::deltaTime;
|
||||
if (damageAuraData->TimeSinceLastTick >= damageAuraData->Tick) {
|
||||
DamageAuraData* expr_28 = damageAuraData;
|
||||
expr_28->TimeSinceLastTick -= damageAuraData->Tick;
|
||||
this->DealDamage(target, damageAuraData);
|
||||
}
|
||||
return this->BasicAuraUpdate(target, data);
|
||||
}
|
||||
|
||||
bool AuraScript::UpdateDamageAuraTickBool(Entity* target, AuraData* data)
|
||||
{
|
||||
DamageAuraData* damageAuraData = (DamageAuraData*)(*data);
|
||||
DamageAuraData* expr_08 = damageAuraData;
|
||||
expr_08->TimeSinceLastTick += Time::deltaTime;
|
||||
if (damageAuraData->TimeSinceLastTick >= damageAuraData->Tick) {
|
||||
DamageAuraData* expr_28 = damageAuraData;
|
||||
expr_28->TimeSinceLastTick -= damageAuraData->Tick;
|
||||
this->DealDamage(target, damageAuraData);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool AuraScript::UpdateHealAura(Entity* target, AuraData* data)
|
||||
{
|
||||
HealAuraData* healAuraData = (HealAuraData*)(*data);
|
||||
HealAuraData* expr_08 = healAuraData;
|
||||
expr_08->TimeSinceLastTick += Time::deltaTime;
|
||||
if (healAuraData->TimeSinceLastTick >= healAuraData->Tick) {
|
||||
HealAuraData* expr_28 = healAuraData;
|
||||
expr_28->TimeSinceLastTick -= healAuraData->Tick;
|
||||
this->Heal(target, healAuraData);
|
||||
}
|
||||
return this->BasicAuraUpdate(target, data);
|
||||
}
|
||||
|
||||
void AuraScript::AbsorbPOnBeforeDamage(SpellDamageInfo* data, AuraData* aura)
|
||||
{
|
||||
ShieldAuraData* shieldAuraData = (ShieldAuraData*)(*aura);
|
||||
int num = data->Damage;
|
||||
if (shieldAuraData->RemainingAbsorb >= num) {
|
||||
ShieldAuraData* expr_18 = shieldAuraData;
|
||||
expr_18->RemainingAbsorb -= num;
|
||||
num = 0;
|
||||
}
|
||||
else {
|
||||
num -= *shieldAuraData->RemainingAbsorb;
|
||||
shieldAuraData->RemainingAbsorb = 0;
|
||||
}
|
||||
data->Damage = num;
|
||||
if (shieldAuraData->RemainingAbsorb == 0) {
|
||||
BaseAuraComponent* arg_70_0 = (Entity*)(data->Receiver)->AuraComponent;
|
||||
this->DeApply((Entity*)(data->Receiver), aura);
|
||||
arg_70_0->JustRemoveAura(this->auraId);
|
||||
}
|
||||
}
|
||||
|
||||
void AuraScript::DealDamage(Entity* target, DamageAuraData* data)
|
||||
{
|
||||
this->damagePipelineData->Set(data->Damage, false, SpellType::TYPE_MAGIC, data->Caster, target, this->aura->gameObject);
|
||||
AuraComponent* auraComponent = target->AuraComponent;
|
||||
auraComponent->OnHit((Entity*)(data->Caster), target, this->aura, this->damagePipelineData->Damage);
|
||||
auraComponent->POnBeforeDamage(this->damagePipelineData);
|
||||
if (this->damagePipelineData->Damage == 0) {
|
||||
return;
|
||||
}
|
||||
target->Stats->TakeDamage(this->damagePipelineData->Damage, false, (Entity*)(data->Caster));
|
||||
auraComponent->OnDamageReceive((Entity*)(data->Caster), target, this->aura, this->damagePipelineData->Damage);
|
||||
}
|
||||
|
||||
void AuraScript::DealDamage(Entity* target, DamageAuraData* data, int damage)
|
||||
{
|
||||
this->damagePipelineData->Set(damage, false, SpellType::TYPE_MAGIC, data->Caster, target, this->aura->gameObject);
|
||||
AuraComponent* auraComponent = target->AuraComponent;
|
||||
auraComponent->OnHit((Entity*)(data->Caster), target, this->aura, this->damagePipelineData->Damage);
|
||||
auraComponent->POnBeforeDamage(this->damagePipelineData);
|
||||
if (this->damagePipelineData->Damage == 0) {
|
||||
return;
|
||||
}
|
||||
target->Stats->TakeDamage(this->damagePipelineData->Damage, false, (Entity*)(data->Caster));
|
||||
auraComponent->OnDamageReceive((Entity*)(data->Caster), target, this->aura, this->damagePipelineData->Damage);
|
||||
}
|
||||
|
||||
void AuraScript::DealDamage(Entity* target, Entity* caster, int damage)
|
||||
{
|
||||
this->damagePipelineData->Set(damage, false, SpellType::TYPE_MAGIC, caster, target, this->aura->gameObject);
|
||||
AuraComponent* auraComponent = target->AuraComponent;
|
||||
auraComponent->OnHit(caster, target, this->aura, this->damagePipelineData->Damage);
|
||||
auraComponent->POnBeforeDamage(this->damagePipelineData);
|
||||
if (this->damagePipelineData->Damage == 0) {
|
||||
return;
|
||||
}
|
||||
target->Stats->TakeDamage(this->damagePipelineData->Damage, false, caster);
|
||||
auraComponent->OnDamageReceive(caster, target, this->aura, this->damagePipelineData->Damage);
|
||||
}
|
||||
|
||||
void AuraScript::DealDamageWithoutOnHit(Entity* target, Entity* caster, int damage)
|
||||
{
|
||||
this->damagePipelineData->Set(damage, false, SpellType::TYPE_MAGIC, caster, target, this->aura->gameObject);
|
||||
AuraComponent* auraComponent = target->AuraComponent;
|
||||
auraComponent->POnBeforeDamage(this->damagePipelineData);
|
||||
if (this->damagePipelineData->Damage == 0) {
|
||||
return;
|
||||
}
|
||||
target->Stats->TakeDamage(this->damagePipelineData->Damage, false, caster);
|
||||
auraComponent->OnDamageReceive(caster, target, this->aura, this->damagePipelineData->Damage);
|
||||
}
|
||||
|
||||
void AuraScript::Heal(Entity* target, HealAuraData* data)
|
||||
{
|
||||
target->Stats->TakeHeal(data->Heal, false, (Entity*)(data->Caster));
|
||||
}
|
||||
|
||||
void AuraScript::Heal(Entity* target, HealAuraData* data, int heal)
|
||||
{
|
||||
target->Stats->TakeHeal(heal, false, (Entity*)(data->Caster));
|
||||
}
|
||||
|
||||
void AuraScript::Heal(Entity* target, AuraData* data, int heal)
|
||||
{
|
||||
target->Stats->TakeHeal(heal, false, (Entity*)(data->Caster));
|
||||
}
|
||||
|
||||
DiminishingReturnAuraData* AuraScript::GetDiminishingReturnAuraDataFor(Entity* target, DiminishingReturnAuraData::DiminishingReturnCategory type)
|
||||
{
|
||||
AuraComponent* auraComponent = target->AuraComponent;
|
||||
for (int i = 0; i < auraComponent->serverAuras->Count; i += 1) {
|
||||
AuraData* auraData = auraComponent->serverAuras->GetData(i);
|
||||
if (is_inst_of<DiminishingReturnAuraData*>(auraData)) {
|
||||
DiminishingReturnAuraData* diminishingReturnAuraData = (DiminishingReturnAuraData*)(*auraData);
|
||||
if (diminishingReturnAuraData->DiminishingCategory == DiminishingReturnAuraData::DiminishingReturnCategory::TYPE_ROOT) {
|
||||
return diminishingReturnAuraData;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
float AuraScript::GetDiminishedTime(Entity* target, DiminishingReturnAuraData::DiminishingReturnCategory diminsihingType, float time)
|
||||
{
|
||||
int auraIdForDiminishingReturn = this->GetAuraIdForDiminishingReturn(diminsihingType);
|
||||
if (auraIdForDiminishingReturn == -1) {
|
||||
Debug::Log(*(new String("AuraScript:RefreshDamageCountAuraDiminished-> Auraid is -1 for a diminishing return aura! DiminishingType: ")) + diminsihingType->ToString());
|
||||
return (float)0;
|
||||
}
|
||||
AuraData* auraData = this->getAuraData(target, auraIdForDiminishingReturn);
|
||||
if (auraData != null) {
|
||||
DiminishingReturnAuraData* aura = (DiminishingReturnAuraData*)(*auraData);
|
||||
return this->GetDiminishedTime(target, aura, time);
|
||||
}
|
||||
return time;
|
||||
}
|
||||
|
||||
void AuraScript::AddEffect(Entity* player, EffectPoints bodyPart, Quaternion* rotation)
|
||||
{
|
||||
Transform* effectPoint = player->GetComponent<IEffectPointGetter>()->GetEffectPoint(bodyPart);
|
||||
if (effectPoint == null) {
|
||||
return;
|
||||
}
|
||||
GameObject* expr_37 = UnityEngine::Object::Instantiate<GameObject>(this->aura->AuraEffectData->EffectPrefab, Vector3::zero, Quaternion::identity, effectPoint);
|
||||
expr_37->AddComponent<EffectAuraIdAttribute>()->AuraId = this->auraId;
|
||||
expr_37->transform->localRotation = rotation;
|
||||
expr_37->transform->localPosition = Vector3::zero;
|
||||
}
|
||||
|
||||
void AuraScript::AddEffect(Entity* player, GameObject* effectPrefab, EffectPoints bodyPart, Quaternion* rotation)
|
||||
{
|
||||
Transform* effectPoint = player->GetComponent<IEffectPointGetter>()->GetEffectPoint(bodyPart);
|
||||
if (effectPoint == null) {
|
||||
return;
|
||||
}
|
||||
GameObject* expr_28 = UnityEngine::Object::Instantiate<GameObject>(effectPrefab, Vector3::zero, Quaternion::identity, effectPoint);
|
||||
expr_28->AddComponent<EffectAuraIdAttribute>()->AuraId = this->auraId;
|
||||
expr_28->transform->localRotation = rotation;
|
||||
expr_28->transform->localPosition = Vector3::zero;
|
||||
}
|
||||
|
||||
void AuraScript::RemoveEffect(Entity* player, EffectPoints bodyPart)
|
||||
{
|
||||
Transform* effectPoint = player->GetComponent<IEffectPointGetter>()->GetEffectPoint(bodyPart);
|
||||
if (effectPoint == null) {
|
||||
return;
|
||||
}
|
||||
for (int i = 0; i < effectPoint->childCount; i += 1) {
|
||||
Transform* child = effectPoint->GetChild(i);
|
||||
EffectAuraIdAttribute* component = child->GetComponent<EffectAuraIdAttribute>();
|
||||
if (!component == null && (component->AuraId == this->auraId)) {
|
||||
child->SetParent(null);
|
||||
UnityEngine::Object::Destroy(child->gameObject);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void AuraScript::RemoveActiveGroupAuras(Entity* target)
|
||||
{
|
||||
if (this->aura->AuraGroup == 0) {
|
||||
return;
|
||||
}
|
||||
target->AuraComponent->RemoveAurasWithGroup(this->aura->AuraGroup);
|
||||
}
|
||||
|
||||
float AuraScript::GetDiminishedTime(Entity* target, DiminishingReturnAuraData* aura, float time)
|
||||
{
|
||||
if (aura != null) {
|
||||
if (aura->Count <= 4) {
|
||||
time /= (float)(aura->Count);
|
||||
}
|
||||
else {
|
||||
time = (float)0;
|
||||
}
|
||||
}
|
||||
return time;
|
||||
}
|
||||
|
||||
int AuraScript::GetAuraIdForDiminishingReturn(DiminishingReturnAuraData::DiminishingReturnCategory type)
|
||||
{
|
||||
if (type == DiminishingReturnAuraData::DiminishingReturnCategory::TYPE_ROOT) {
|
||||
return 1;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
AuraData* AuraScript::getAuraData(Entity* target, int pAuraId)
|
||||
{
|
||||
AuraComponent* auraComponent = target->AuraComponent;
|
||||
for (int i = 0; i < auraComponent->serverAuras->Count; i += 1) {
|
||||
if (auraComponent->serverAuras->GetData(i)->AuraId == pAuraId) {
|
||||
return auraComponent->serverAuras->GetData(i);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
void AuraScript::ApplyAura(int auraId, Entity* caster, Entity* target, float spellScale)
|
||||
{
|
||||
(AuraScript*)(Auras::Instance->GetData(auraId)->AuraScript)->Apply(caster, target, spellScale);
|
||||
}
|
||||
|
||||
bool AuraScript::IsZero(float x)
|
||||
{
|
||||
return (x < Mathf::Epsilon) && (x > -Mathf::Epsilon);
|
||||
}
|
||||
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
GenericAuraScript::GenericAuraScript() {
|
||||
if (aura->GenericAuraScriptData->AttributeModifiers->Count > 0) {
|
||||
this->hasModifiers = true;
|
||||
}
|
||||
}
|
||||
void GenericAuraScript::Apply(WorldEntity* caster, WorldEntity* target, float spellScale)
|
||||
{
|
||||
if (this->aura->AuraGroup != 0) {
|
||||
AuraScript::RemoveActiveGroupAuras(target);
|
||||
}
|
||||
if (((this->hasModifiers && !this->aura->AuraDamageData->Enabled) && !this->aura->AuraAbsorbData->Enabled) && !this->aura->AuraHealData->Enabled) {
|
||||
if (AuraScript::ShouldApplyModifiers(target, this->aura->Time, caster, spellScale)) {
|
||||
this->ApplyModifiers(target);
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (this->aura->AuraDamageData->Enabled) {
|
||||
AuraScript::AddOrRefreshDamageAuraDataToTarget(target, caster, spellScale, this->aura->Time, this->aura->AuraDamageData->Tick, AuraScript::CalculateDamage(caster, target, spellScale));
|
||||
}
|
||||
if (this->aura->AuraHealData->Enabled) {
|
||||
AuraScript::AddOrRefreshHealAuraDataToTarget(target, caster, spellScale, this->aura->Time, this->aura->AuraHealData->Tick, AuraScript::CalculateHeal(caster, target, spellScale));
|
||||
}
|
||||
if (this->aura->AuraAbsorbData->Enabled) {
|
||||
AuraScript::AddOrRefreshShieldAuraDataToTarget(target, caster, spellScale, this->aura->Time, AuraScript::CalculateAbsorb(caster, target, spellScale));
|
||||
}
|
||||
}
|
||||
void GenericAuraScript::DeApply(WorldEntity* target, AuraData* data)
|
||||
{
|
||||
if (this->hasModifiers && AuraScript::ShouldRemoveModifiers(target)) {
|
||||
this->RemoveModifiers(target);
|
||||
}
|
||||
}
|
||||
bool GenericAuraScript::AuraUpdate(WorldEntity* target, AuraData* data)
|
||||
{
|
||||
bool flag = false;
|
||||
if (this->aura->AuraDamageData->Enabled) {
|
||||
flag = AuraScript::UpdateDamageAura(target, data);
|
||||
}
|
||||
if (this->aura->AuraHealData->Enabled) {
|
||||
bool flag2 = AuraScript::UpdateHealAura(target, data);
|
||||
if (!flag) {
|
||||
flag = flag2;
|
||||
}
|
||||
}
|
||||
if (!this->aura->AuraDamageData->Enabled && !this->aura->AuraHealData->Enabled) {
|
||||
return AuraScript::AuraUpdate(target, data);
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
void GenericAuraScript::POnBeforeDamage(SpellDamageInfo* data, AuraData* auraData)
|
||||
{
|
||||
if (this->aura->AuraAbsorbData->Enabled) {
|
||||
AuraScript::AbsorbPOnBeforeDamage(data, auraData);
|
||||
}
|
||||
}
|
||||
void GenericAuraScript::COnAdded(WorldEntity* target, Aura* data, AuraData* auraData)
|
||||
{
|
||||
this->ApplyEffect(target);
|
||||
}
|
||||
void GenericAuraScript::COnRemoved(WorldEntity* target, Aura* data)
|
||||
{
|
||||
this->RemoveEffect(target);
|
||||
}
|
||||
void GenericAuraScript::ApplyEffect(WorldEntity* target)
|
||||
{
|
||||
if (!this->aura->AuraEffectData->Enabled) {
|
||||
return;
|
||||
}
|
||||
if (this->aura->AuraEffectData->EffectPoint1 != EffectPoints::NONE) {
|
||||
AuraScript::AddEffect(target, this->aura->AuraEffectData->EffectPrefab, this->aura->AuraEffectData->EffectPoint1, );
|
||||
}
|
||||
if (this->aura->AuraEffectData->EffectPoint2 != EffectPoints::NONE) {
|
||||
AuraScript::AddEffect(target, this->aura->AuraEffectData->EffectPrefab, this->aura->AuraEffectData->EffectPoint2, );
|
||||
}
|
||||
}
|
||||
void GenericAuraScript::RemoveEffect(WorldEntity* target)
|
||||
{
|
||||
if (!this->aura->AuraEffectData->Enabled) {
|
||||
return;
|
||||
}
|
||||
if (this->aura->AuraEffectData->EffectPoint1 != EffectPoints::NONE) {
|
||||
AuraScript::RemoveEffect(target, this->aura->AuraEffectData->EffectPoint1);
|
||||
}
|
||||
if (this->aura->AuraEffectData->EffectPoint2 != EffectPoints::NONE) {
|
||||
AuraScript::RemoveEffect(target, this->aura->AuraEffectData->EffectPoint2);
|
||||
}
|
||||
}
|
||||
void GenericAuraScript::ApplyModifiers(WorldEntity* target)
|
||||
{
|
||||
for (int i = 0; i < this->aura->GenericAuraScriptData->AttributeModifiers->Count; i += 1) {
|
||||
GenericAuraScriptAttributeHelper* genericAuraAttributeHelper = this->aura->GenericAuraScriptData->AttributeModifiers->GetData(i);
|
||||
AuraScript::AddStatModifier(target, genericAuraAttributeHelper->Stat, genericAuraAttributeHelper->MaxMod, genericAuraAttributeHelper->PercentMod);
|
||||
}
|
||||
}
|
||||
void GenericAuraScript::RemoveModifiers(WorldEntity* target)
|
||||
{
|
||||
for (int i = 0; i < this->aura->GenericAuraScriptData->AttributeModifiers->Count; i += 1) {
|
||||
GenericAuraScriptAttributeHelper* genericAuraAttributeHelper = this->aura->GenericAuraScriptData->AttributeModifiers->GetData(i);
|
||||
AuraScript::RemoveStatModifier(target, genericAuraAttributeHelper->Stat);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user