1
This commit is contained in:
parent
d26cd19ac7
commit
daa4c26099
@ -62,6 +62,14 @@ Ability::Ability(CreatureWeakPtr owner)
|
||||
std::get<0>(tuple) = .0f;
|
||||
INIT_LIST_HEAD(&std::get<1>(tuple));
|
||||
}
|
||||
for (auto& tuple : vattr_add_) {
|
||||
std::get<0>(tuple) = .0f;
|
||||
INIT_LIST_HEAD(&std::get<1>(tuple));
|
||||
}
|
||||
for (auto& tuple : vattr_dec_) {
|
||||
std::get<0>(tuple) = .0f;
|
||||
INIT_LIST_HEAD(&std::get<1>(tuple));
|
||||
}
|
||||
Clear();
|
||||
}
|
||||
|
||||
@ -124,6 +132,30 @@ void Ability::Clear()
|
||||
delete e;
|
||||
}
|
||||
}
|
||||
|
||||
for (auto& tuple : vattr_add_) {
|
||||
std::get<0>(tuple) = 0.0f;
|
||||
while (!list_empty(&std::get<1>(tuple))) {
|
||||
AttrAddition* e = list_first_entry(&std::get<1>(tuple),
|
||||
AttrAddition,
|
||||
entry);
|
||||
e->ptr->data = nullptr;
|
||||
list_del_init(&e->entry);
|
||||
delete e;
|
||||
}
|
||||
}
|
||||
for (auto& tuple : vattr_dec_) {
|
||||
std::get<0>(tuple) = 0.0f;
|
||||
while (!list_empty(&std::get<1>(tuple))) {
|
||||
AttrRuduce* e = list_first_entry(&std::get<1>(tuple),
|
||||
AttrRuduce,
|
||||
entry);
|
||||
e->ptr->data = nullptr;
|
||||
list_del_init(&e->entry);
|
||||
delete e;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
float* Ability::GetBuffAttrAbsPtr(int attr_id)
|
||||
|
@ -83,6 +83,8 @@ class Ability
|
||||
std::array<int, kHAT_End> buff_attr_flag_ = {};
|
||||
std::array<std::tuple<float, list_head>, kHAT_End> attr_add_ = {};
|
||||
std::array<std::tuple<float, list_head>, kHAT_End> attr_dec_ = {};
|
||||
std::array<std::tuple<float, list_head>, kHVAT_End - kHVAT_Begin> vattr_add_ = {};
|
||||
std::array<std::tuple<float, list_head>, kHVAT_End - kHVAT_Begin> vattr_dec_ = {};
|
||||
|
||||
int speed_addition_times_ = 0;
|
||||
float speed_addition_rate_ = 0;
|
||||
|
@ -49,3 +49,10 @@ enum HumanAttrType_e
|
||||
kHAT_Shield = 53,
|
||||
kHAT_End
|
||||
};
|
||||
|
||||
enum HumanVirtualAttrType_e
|
||||
{
|
||||
kHVAT_Begin = 1000,
|
||||
kHVAT_Dmg = 1001,
|
||||
kHVAT_End
|
||||
};
|
||||
|
@ -565,8 +565,8 @@ float BattleDataContext::CalcDmg(Creature* target, IBullet* bullet)
|
||||
normal_dmg *= 1.5;
|
||||
}
|
||||
float finaly_dmg = normal_dmg;
|
||||
finaly_dmg *= (1 + owner_.Get()->GetAbility()->GetAttrAddition(kHAT_Atk)); //连加
|
||||
finaly_dmg *= target->GetAbility()->GetAttrRuduce(kHAT_Atk); //(1-减免) 连乘
|
||||
finaly_dmg *= (1 + owner_.Get()->GetAbility()->GetAttrAddition(kHVAT_Dmg)); //连加
|
||||
finaly_dmg *= target->GetAbility()->GetAttrRuduce(kHVAT_Dmg); //(1-减免) 连乘
|
||||
#else
|
||||
float total_atk = GetTotalAtk(bullet);
|
||||
if (bullet->GetSkillMeta() && bullet->GetSkillMeta()->_number_meta) {
|
||||
|
@ -23,6 +23,11 @@ bool IsValidHumanAttr(int attr_type)
|
||||
return attr_type > kHAT_Begin && attr_type < kHAT_End;
|
||||
}
|
||||
|
||||
bool IsValidHumanVirtualAttr(int attr_type)
|
||||
{
|
||||
return attr_type > kHVAT_Begin && attr_type < kHVAT_End;
|
||||
}
|
||||
|
||||
bool IsValidEventBuff(int event)
|
||||
{
|
||||
return event >= 0 && event < kEventBuffEnd;
|
||||
|
@ -21,6 +21,7 @@ class Global : public a8::Singleton<Global>
|
||||
bool IsValidSlotId(int slot_id);
|
||||
bool IsValidBuffEffect(int buff_effect);
|
||||
bool IsValidHumanAttr(int attr_type);
|
||||
bool IsValidHumanVirtualAttr(int attr_type);
|
||||
bool IsValidEventBuff(int event);
|
||||
bool IsValidWeaponOpt(int opt);
|
||||
bool IsValidBuffOpt(int opt);
|
||||
|
Loading…
x
Reference in New Issue
Block a user