1
This commit is contained in:
parent
8940c24404
commit
a7d97703ed
@ -127,6 +127,11 @@ float Ability::GetSpeedAddition()
|
||||
return speed_addition_rate_;
|
||||
}
|
||||
|
||||
int Ability::GetSpeedAdditionTimes()
|
||||
{
|
||||
return speed_addition_times_;
|
||||
}
|
||||
|
||||
void Ability::AddDmgRuduce(float rate)
|
||||
{
|
||||
dmg_ruduce_rate_ += rate;
|
||||
@ -150,6 +155,11 @@ float Ability::GetDmgRuduce()
|
||||
return dmg_ruduce_rate_;
|
||||
}
|
||||
|
||||
int Ability::GetDmgRuduceTimes()
|
||||
{
|
||||
return dmg_ruduce_times_;
|
||||
}
|
||||
|
||||
void Ability::AddDmgAddition(float rate)
|
||||
{
|
||||
dmg_addition_rate_ += rate;
|
||||
@ -172,3 +182,56 @@ float Ability::GetDmgAddition()
|
||||
{
|
||||
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 DelSpeedAddition(float rate);
|
||||
float GetSpeedAddition();
|
||||
int GetSpeedAdditionTimes();
|
||||
void AddDmgRuduce(float rate);
|
||||
void DelDmgRuduce(float rate);
|
||||
float GetDmgRuduce();
|
||||
int GetDmgRuduceTimes();
|
||||
void AddDmgAddition(float rate);
|
||||
void DelDmgAddition(float rate);
|
||||
float GetDmgAddition();
|
||||
int GetDmgAdditionTimes();
|
||||
void AddDefAddition(float rate);
|
||||
void DelDefAddition(float rate);
|
||||
float GetDefAddition();
|
||||
int GetDefAdditionTimes();
|
||||
void IncImmuneVertigo();
|
||||
void DecImmuneVertigo();
|
||||
int GetImmuneVertigoTimes();
|
||||
|
||||
private:
|
||||
std::array<float, kHAT_End> buff_attr_abs_ = {};
|
||||
@ -42,4 +52,10 @@ class Ability
|
||||
|
||||
int dmg_addition_times_ = 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()
|
||||
{
|
||||
float speed_rate = SkillHelper::GetMyxySpeedRate(meta);
|
||||
float def_rate = SkillHelper::GetMyxyDefRate(meta);
|
||||
owner->GetTrigger()->AddListener
|
||||
(
|
||||
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));
|
||||
if (!buff->skill_meta || buff->skill_meta->GetMagicId() != MAGIC_HJHX) {
|
||||
return;
|
||||
}
|
||||
owner->GetAbility()->AddSpeedAddition(speed_rate);
|
||||
owner->GetAbility()->AddDefAddition(def_rate);
|
||||
owner->GetAbility()->IncImmuneVertigo();
|
||||
}
|
||||
);
|
||||
owner->GetTrigger()->AddListener
|
||||
(
|
||||
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));
|
||||
if (!buff->skill_meta || buff->skill_meta->GetMagicId() != MAGIC_HJHX) {
|
||||
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;
|
||||
}
|
||||
|
||||
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 GetSsjsProb(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 bool ProcBulletDmg(Bullet* bullet, Creature* target, float& finaly_dmg);
|
||||
|
Loading…
x
Reference in New Issue
Block a user