1
This commit is contained in:
parent
d26cd19ac7
commit
daa4c26099
@ -62,6 +62,14 @@ Ability::Ability(CreatureWeakPtr owner)
|
|||||||
std::get<0>(tuple) = .0f;
|
std::get<0>(tuple) = .0f;
|
||||||
INIT_LIST_HEAD(&std::get<1>(tuple));
|
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();
|
Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -124,6 +132,30 @@ void Ability::Clear()
|
|||||||
delete e;
|
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)
|
float* Ability::GetBuffAttrAbsPtr(int attr_id)
|
||||||
|
@ -83,6 +83,8 @@ class Ability
|
|||||||
std::array<int, kHAT_End> buff_attr_flag_ = {};
|
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_add_ = {};
|
||||||
std::array<std::tuple<float, list_head>, kHAT_End> attr_dec_ = {};
|
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;
|
int speed_addition_times_ = 0;
|
||||||
float speed_addition_rate_ = 0;
|
float speed_addition_rate_ = 0;
|
||||||
|
@ -49,3 +49,10 @@ enum HumanAttrType_e
|
|||||||
kHAT_Shield = 53,
|
kHAT_Shield = 53,
|
||||||
kHAT_End
|
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;
|
normal_dmg *= 1.5;
|
||||||
}
|
}
|
||||||
float finaly_dmg = normal_dmg;
|
float finaly_dmg = normal_dmg;
|
||||||
finaly_dmg *= (1 + owner_.Get()->GetAbility()->GetAttrAddition(kHAT_Atk)); //连加
|
finaly_dmg *= (1 + owner_.Get()->GetAbility()->GetAttrAddition(kHVAT_Dmg)); //连加
|
||||||
finaly_dmg *= target->GetAbility()->GetAttrRuduce(kHAT_Atk); //(1-减免) 连乘
|
finaly_dmg *= target->GetAbility()->GetAttrRuduce(kHVAT_Dmg); //(1-减免) 连乘
|
||||||
#else
|
#else
|
||||||
float total_atk = GetTotalAtk(bullet);
|
float total_atk = GetTotalAtk(bullet);
|
||||||
if (bullet->GetSkillMeta() && bullet->GetSkillMeta()->_number_meta) {
|
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;
|
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)
|
bool IsValidEventBuff(int event)
|
||||||
{
|
{
|
||||||
return event >= 0 && event < kEventBuffEnd;
|
return event >= 0 && event < kEventBuffEnd;
|
||||||
|
@ -21,6 +21,7 @@ class Global : public a8::Singleton<Global>
|
|||||||
bool IsValidSlotId(int slot_id);
|
bool IsValidSlotId(int slot_id);
|
||||||
bool IsValidBuffEffect(int buff_effect);
|
bool IsValidBuffEffect(int buff_effect);
|
||||||
bool IsValidHumanAttr(int attr_type);
|
bool IsValidHumanAttr(int attr_type);
|
||||||
|
bool IsValidHumanVirtualAttr(int attr_type);
|
||||||
bool IsValidEventBuff(int event);
|
bool IsValidEventBuff(int event);
|
||||||
bool IsValidWeaponOpt(int opt);
|
bool IsValidWeaponOpt(int opt);
|
||||||
bool IsValidBuffOpt(int opt);
|
bool IsValidBuffOpt(int opt);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user