1
This commit is contained in:
parent
8940c24404
commit
a7d97703ed
@ -127,6 +127,11 @@ float Ability::GetSpeedAddition()
|
|||||||
return speed_addition_rate_;
|
return speed_addition_rate_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int Ability::GetSpeedAdditionTimes()
|
||||||
|
{
|
||||||
|
return speed_addition_times_;
|
||||||
|
}
|
||||||
|
|
||||||
void Ability::AddDmgRuduce(float rate)
|
void Ability::AddDmgRuduce(float rate)
|
||||||
{
|
{
|
||||||
dmg_ruduce_rate_ += rate;
|
dmg_ruduce_rate_ += rate;
|
||||||
@ -150,6 +155,11 @@ float Ability::GetDmgRuduce()
|
|||||||
return dmg_ruduce_rate_;
|
return dmg_ruduce_rate_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int Ability::GetDmgRuduceTimes()
|
||||||
|
{
|
||||||
|
return dmg_ruduce_times_;
|
||||||
|
}
|
||||||
|
|
||||||
void Ability::AddDmgAddition(float rate)
|
void Ability::AddDmgAddition(float rate)
|
||||||
{
|
{
|
||||||
dmg_addition_rate_ += rate;
|
dmg_addition_rate_ += rate;
|
||||||
@ -172,3 +182,56 @@ float Ability::GetDmgAddition()
|
|||||||
{
|
{
|
||||||
return dmg_addition_rate_;
|
return dmg_addition_rate_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int Ability::GetDmgAdditionTimes()
|
||||||
|
{
|
||||||
|
return dmg_addition_times_;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Ability::AddDefAddition(float rate)
|
||||||
|
{
|
||||||
|
def_addition_rate_ += rate;
|
||||||
|
++def_addition_times_;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Ability::DelDefAddition(float rate)
|
||||||
|
{
|
||||||
|
def_addition_rate_ -= rate;
|
||||||
|
def_addition_rate_ = std::max(0.0f, def_addition_rate_);
|
||||||
|
--def_addition_times_;
|
||||||
|
#ifdef DEBUG
|
||||||
|
if (def_addition_times_ < 0) {
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
float Ability::GetDefAddition()
|
||||||
|
{
|
||||||
|
return def_addition_rate_;
|
||||||
|
}
|
||||||
|
|
||||||
|
int Ability::GetDefAdditionTimes()
|
||||||
|
{
|
||||||
|
return def_addition_times_;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Ability::IncImmuneVertigo()
|
||||||
|
{
|
||||||
|
++immune_vertigo_times_;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Ability::DecImmuneVertigo()
|
||||||
|
{
|
||||||
|
--immune_vertigo_times_;
|
||||||
|
#ifdef DEBUG
|
||||||
|
if (immune_vertigo_times_ < 0) {
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
int Ability::GetImmuneVertigoTimes()
|
||||||
|
{
|
||||||
|
return immune_vertigo_times_;
|
||||||
|
}
|
||||||
|
@ -22,12 +22,22 @@ class Ability
|
|||||||
void AddSpeedAddition(float rate);
|
void AddSpeedAddition(float rate);
|
||||||
void DelSpeedAddition(float rate);
|
void DelSpeedAddition(float rate);
|
||||||
float GetSpeedAddition();
|
float GetSpeedAddition();
|
||||||
|
int GetSpeedAdditionTimes();
|
||||||
void AddDmgRuduce(float rate);
|
void AddDmgRuduce(float rate);
|
||||||
void DelDmgRuduce(float rate);
|
void DelDmgRuduce(float rate);
|
||||||
float GetDmgRuduce();
|
float GetDmgRuduce();
|
||||||
|
int GetDmgRuduceTimes();
|
||||||
void AddDmgAddition(float rate);
|
void AddDmgAddition(float rate);
|
||||||
void DelDmgAddition(float rate);
|
void DelDmgAddition(float rate);
|
||||||
float GetDmgAddition();
|
float GetDmgAddition();
|
||||||
|
int GetDmgAdditionTimes();
|
||||||
|
void AddDefAddition(float rate);
|
||||||
|
void DelDefAddition(float rate);
|
||||||
|
float GetDefAddition();
|
||||||
|
int GetDefAdditionTimes();
|
||||||
|
void IncImmuneVertigo();
|
||||||
|
void DecImmuneVertigo();
|
||||||
|
int GetImmuneVertigoTimes();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::array<float, kHAT_End> buff_attr_abs_ = {};
|
std::array<float, kHAT_End> buff_attr_abs_ = {};
|
||||||
@ -42,4 +52,10 @@ class Ability
|
|||||||
|
|
||||||
int dmg_addition_times_ = 0;
|
int dmg_addition_times_ = 0;
|
||||||
float dmg_addition_rate_ = 0;
|
float dmg_addition_rate_ = 0;
|
||||||
|
|
||||||
|
int def_addition_times_ = 0;
|
||||||
|
float def_addition_rate_ = 0;
|
||||||
|
|
||||||
|
int immune_vertigo_times_ = 0;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -495,26 +495,34 @@ void Skill::ProcCMXD()
|
|||||||
|
|
||||||
void Skill::ProcMYXY()
|
void Skill::ProcMYXY()
|
||||||
{
|
{
|
||||||
|
float speed_rate = SkillHelper::GetMyxySpeedRate(meta);
|
||||||
|
float def_rate = SkillHelper::GetMyxyDefRate(meta);
|
||||||
owner->GetTrigger()->AddListener
|
owner->GetTrigger()->AddListener
|
||||||
(
|
(
|
||||||
kStartSwitchWeaponBuffEvent,
|
kStartSwitchWeaponBuffEvent,
|
||||||
[this] (const std::vector<std::any>& params)
|
[this, speed_rate, def_rate] (const std::vector<std::any>& params)
|
||||||
{
|
{
|
||||||
Buff* buff = std::any_cast<Buff*>(params.at(0));
|
Buff* buff = std::any_cast<Buff*>(params.at(0));
|
||||||
if (!buff->skill_meta || buff->skill_meta->GetMagicId() != MAGIC_HJHX) {
|
if (!buff->skill_meta || buff->skill_meta->GetMagicId() != MAGIC_HJHX) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
owner->GetAbility()->AddSpeedAddition(speed_rate);
|
||||||
|
owner->GetAbility()->AddDefAddition(def_rate);
|
||||||
|
owner->GetAbility()->IncImmuneVertigo();
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
owner->GetTrigger()->AddListener
|
owner->GetTrigger()->AddListener
|
||||||
(
|
(
|
||||||
kEndSwitchWeaponBuffEvent,
|
kEndSwitchWeaponBuffEvent,
|
||||||
[this] (const std::vector<std::any>& params)
|
[this, speed_rate, def_rate] (const std::vector<std::any>& params)
|
||||||
{
|
{
|
||||||
Buff* buff = std::any_cast<Buff*>(params.at(0));
|
Buff* buff = std::any_cast<Buff*>(params.at(0));
|
||||||
if (!buff->skill_meta || buff->skill_meta->GetMagicId() != MAGIC_HJHX) {
|
if (!buff->skill_meta || buff->skill_meta->GetMagicId() != MAGIC_HJHX) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
owner->GetAbility()->DelSpeedAddition(speed_rate);
|
||||||
|
owner->GetAbility()->DelDefAddition(def_rate);
|
||||||
|
owner->GetAbility()->DecImmuneVertigo();
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -386,3 +386,13 @@ float SkillHelper::GetSsjsSpeedRate(const MetaData::Skill* skill_meta)
|
|||||||
{
|
{
|
||||||
return skill_meta->number_meta->float_speed;
|
return skill_meta->number_meta->float_speed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float SkillHelper::GetMyxySpeedRate(const MetaData::Skill* skill_meta)
|
||||||
|
{
|
||||||
|
return skill_meta->number_meta->float_speed;
|
||||||
|
}
|
||||||
|
|
||||||
|
float SkillHelper::GetMyxyDefRate(const MetaData::Skill* skill_meta)
|
||||||
|
{
|
||||||
|
return skill_meta->number_meta->float_ratio;
|
||||||
|
}
|
||||||
|
@ -50,6 +50,9 @@ class SkillHelper
|
|||||||
static float GetSsjsTime(const MetaData::Skill* skill_meta);
|
static float GetSsjsTime(const MetaData::Skill* skill_meta);
|
||||||
static float GetSsjsProb(const MetaData::Skill* skill_meta);
|
static float GetSsjsProb(const MetaData::Skill* skill_meta);
|
||||||
static float GetSsjsSpeedRate(const MetaData::Skill* skill_meta);
|
static float GetSsjsSpeedRate(const MetaData::Skill* skill_meta);
|
||||||
|
//免疫眩晕
|
||||||
|
static float GetMyxySpeedRate(const MetaData::Skill* skill_meta);
|
||||||
|
static float GetMyxyDefRate(const MetaData::Skill* skill_meta);
|
||||||
|
|
||||||
static void ProcBulletHitBuff(Bullet* bullet, Creature* c, int buff_uniid);
|
static void ProcBulletHitBuff(Bullet* bullet, Creature* c, int buff_uniid);
|
||||||
static bool ProcBulletDmg(Bullet* bullet, Creature* target, float& finaly_dmg);
|
static bool ProcBulletDmg(Bullet* bullet, Creature* target, float& finaly_dmg);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user