1
This commit is contained in:
parent
49966de9d2
commit
dbd5064c69
@ -100,27 +100,27 @@ struct AttrRuduce
|
|||||||
Ability::Ability(CreatureWeakPtr owner)
|
Ability::Ability(CreatureWeakPtr owner)
|
||||||
{
|
{
|
||||||
for (auto& tuple : attr_abs_) {
|
for (auto& tuple : attr_abs_) {
|
||||||
std::get<0>(tuple) = .0f;
|
std::get<0>(tuple) = 0.0f;
|
||||||
INIT_LIST_HEAD(&std::get<1>(tuple));
|
INIT_LIST_HEAD(&std::get<1>(tuple));
|
||||||
}
|
}
|
||||||
for (auto& tuple : attr_rate_) {
|
for (auto& tuple : attr_rate_) {
|
||||||
std::get<0>(tuple) = .0f;
|
std::get<0>(tuple) = 0.0f;
|
||||||
INIT_LIST_HEAD(&std::get<1>(tuple));
|
INIT_LIST_HEAD(&std::get<1>(tuple));
|
||||||
}
|
}
|
||||||
for (auto& tuple : attr_add_) {
|
for (auto& tuple : attr_add_) {
|
||||||
std::get<0>(tuple) = .0f;
|
std::get<0>(tuple) = 0.0f;
|
||||||
INIT_LIST_HEAD(&std::get<1>(tuple));
|
INIT_LIST_HEAD(&std::get<1>(tuple));
|
||||||
}
|
}
|
||||||
for (auto& tuple : attr_dec_) {
|
for (auto& tuple : attr_dec_) {
|
||||||
std::get<0>(tuple) = .0f;
|
std::get<0>(tuple) = 0.0f;
|
||||||
INIT_LIST_HEAD(&std::get<1>(tuple));
|
INIT_LIST_HEAD(&std::get<1>(tuple));
|
||||||
}
|
}
|
||||||
for (auto& tuple : vattr_add_) {
|
for (auto& tuple : vattr_add_) {
|
||||||
std::get<0>(tuple) = .0f;
|
std::get<0>(tuple) = 0.0f;
|
||||||
INIT_LIST_HEAD(&std::get<1>(tuple));
|
INIT_LIST_HEAD(&std::get<1>(tuple));
|
||||||
}
|
}
|
||||||
for (auto& tuple : vattr_dec_) {
|
for (auto& tuple : vattr_dec_) {
|
||||||
std::get<0>(tuple) = .0f;
|
std::get<0>(tuple) = 0.0f;
|
||||||
INIT_LIST_HEAD(&std::get<1>(tuple));
|
INIT_LIST_HEAD(&std::get<1>(tuple));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -199,62 +199,6 @@ void Ability::Clear()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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::AddAtkAddition(float rate)
|
|
||||||
{
|
|
||||||
atk_addition_rate_ += rate;
|
|
||||||
++atk_addition_times_;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Ability::DelAtkAddition(float rate)
|
|
||||||
{
|
|
||||||
atk_addition_rate_ -= rate;
|
|
||||||
atk_addition_rate_ = std::max(0.0f, atk_addition_rate_);
|
|
||||||
--atk_addition_times_;
|
|
||||||
#ifdef DEBUG
|
|
||||||
if (atk_addition_times_ < 0) {
|
|
||||||
abort();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
float Ability::GetAtkAddition()
|
|
||||||
{
|
|
||||||
return atk_addition_rate_;
|
|
||||||
}
|
|
||||||
|
|
||||||
int Ability::GetAtkAdditionTimes()
|
|
||||||
{
|
|
||||||
return atk_addition_times_;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Ability::IncImmuneTimes(int tag)
|
void Ability::IncImmuneTimes(int tag)
|
||||||
{
|
{
|
||||||
auto itr = immune_tags_.find(tag);
|
auto itr = immune_tags_.find(tag);
|
||||||
|
@ -5,36 +5,21 @@
|
|||||||
|
|
||||||
typedef std::weak_ptr<struct AttrAdditionPtr> AttrAdditionHandle;
|
typedef std::weak_ptr<struct AttrAdditionPtr> AttrAdditionHandle;
|
||||||
typedef std::weak_ptr<struct AttrRuducePtr> AttrRuduceHandle;
|
typedef std::weak_ptr<struct AttrRuducePtr> AttrRuduceHandle;
|
||||||
|
|
||||||
typedef std::weak_ptr<struct AttrAbsPtr> AttrAbsHandle;
|
typedef std::weak_ptr<struct AttrAbsPtr> AttrAbsHandle;
|
||||||
typedef std::weak_ptr<struct AttrRatePtr> AttrRateHandle;
|
typedef std::weak_ptr<struct AttrRatePtr> AttrRateHandle;
|
||||||
|
|
||||||
class Room;
|
|
||||||
class Human;
|
|
||||||
class Ability
|
class Ability
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Ability(CreatureWeakPtr owner);
|
Ability(CreatureWeakPtr owner);
|
||||||
|
|
||||||
void AddDefAddition(float rate);
|
|
||||||
void DelDefAddition(float rate);
|
|
||||||
float GetDefAddition();
|
|
||||||
int GetDefAdditionTimes();
|
|
||||||
|
|
||||||
void AddAtkAddition(float rate);
|
|
||||||
void DelAtkAddition(float rate);
|
|
||||||
float GetAtkAddition();
|
|
||||||
int GetAtkAdditionTimes();
|
|
||||||
|
|
||||||
void IncImmuneTimes(int tag);
|
void IncImmuneTimes(int tag);
|
||||||
void DecImmuneTimes(int tag);
|
void DecImmuneTimes(int tag);
|
||||||
bool CanImmune(int tag);
|
bool CanImmune(int tag);
|
||||||
bool CanImmune(const std::set<int>& tags);
|
bool CanImmune(const std::set<int>& tags);
|
||||||
|
|
||||||
void IncDisableShotTimes();
|
void IncDisableShotTimes();
|
||||||
void DecDisableShotTimes();
|
void DecDisableShotTimes();
|
||||||
int GetDisableShotTimes();
|
int GetDisableShotTimes();
|
||||||
|
|
||||||
void IncDisableUseSkillTimes();
|
void IncDisableUseSkillTimes();
|
||||||
void DecDisableUseSkillTimes();
|
void DecDisableUseSkillTimes();
|
||||||
int GetDisableUseSkillTimes();
|
int GetDisableUseSkillTimes();
|
||||||
@ -43,8 +28,6 @@ class Ability
|
|||||||
void RemoveAttrAbs(AttrAbsHandle handle);
|
void RemoveAttrAbs(AttrAbsHandle handle);
|
||||||
AttrRateHandle AddAttrRate(int attr_id, float value);
|
AttrRateHandle AddAttrRate(int attr_id, float value);
|
||||||
void RemoveAttrRate(AttrRateHandle handle);
|
void RemoveAttrRate(AttrRateHandle handle);
|
||||||
void RecalcAttrAbs(int attr_id);
|
|
||||||
void RecalcAttrRate(int attr_id);
|
|
||||||
float GetAttrAbs(int attr_id);
|
float GetAttrAbs(int attr_id);
|
||||||
float GetAttrRate(int attr_id);
|
float GetAttrRate(int attr_id);
|
||||||
|
|
||||||
@ -52,33 +35,25 @@ class Ability
|
|||||||
void RemoveAttrAddition(AttrAdditionHandle handler);
|
void RemoveAttrAddition(AttrAdditionHandle handler);
|
||||||
AttrRuduceHandle AddAttrRuduce(int attr_id, float rate);
|
AttrRuduceHandle AddAttrRuduce(int attr_id, float rate);
|
||||||
void RemoveAttrRuduce(AttrRuduceHandle handler);
|
void RemoveAttrRuduce(AttrRuduceHandle handler);
|
||||||
void RecalcAttrAddition(int attr_id);
|
|
||||||
void RecalcAttrRuduce(int attr_id);
|
|
||||||
float GetAttrAddition(int attr_id);
|
float GetAttrAddition(int attr_id);
|
||||||
float GetAttrRuduce(int attr_id);
|
float GetAttrRuduce(int attr_id);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void Clear();
|
void Clear();
|
||||||
|
void RecalcAttrAbs(int attr_id);
|
||||||
|
void RecalcAttrRate(int attr_id);
|
||||||
|
void RecalcAttrAddition(int attr_id);
|
||||||
|
void RecalcAttrRuduce(int attr_id);
|
||||||
private:
|
private:
|
||||||
CreatureWeakPtr owner_;
|
CreatureWeakPtr owner_;
|
||||||
std::array<std::tuple<float, list_head>, kHAT_End> attr_abs_ = {};
|
std::array<std::tuple<float, list_head>, kHAT_End> attr_abs_ = {};
|
||||||
std::array<std::tuple<float, list_head>, kHAT_End> attr_rate_ = {};
|
std::array<std::tuple<float, list_head>, kHAT_End> attr_rate_ = {};
|
||||||
|
|
||||||
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_add_ = {};
|
||||||
std::array<std::tuple<float, list_head>, kHVAT_End - kHVAT_Begin> vattr_dec_ = {};
|
std::array<std::tuple<float, list_head>, kHVAT_End - kHVAT_Begin> vattr_dec_ = {};
|
||||||
|
|
||||||
int def_addition_times_ = 0;
|
|
||||||
float def_addition_rate_ = 0;
|
|
||||||
|
|
||||||
int atk_addition_times_ = 0;
|
|
||||||
float atk_addition_rate_ = 0;
|
|
||||||
|
|
||||||
int disable_shot_times_ = 0;
|
int disable_shot_times_ = 0;
|
||||||
int disable_useskill_times_ = 0;
|
int disable_useskill_times_ = 0;
|
||||||
|
|
||||||
std::map<int, int> immune_tags_;
|
std::map<int, int> immune_tags_;
|
||||||
|
|
||||||
friend class PBUtils;
|
friend class PBUtils;
|
||||||
|
@ -3147,7 +3147,7 @@ void Human::ProcGemStoneItem(AddItemDTO& dto)
|
|||||||
0,
|
0,
|
||||||
gemstone,
|
gemstone,
|
||||||
false);
|
false);
|
||||||
GetAbility()->AddAtkAddition(dto.item_meta->_atk);
|
GetAbility()->AddAttrRate(kHAT_Atk, dto.item_meta->_atk);
|
||||||
SetMaxHP(GetMaxHP() + dto.item_meta->_max_hp * GetBattleContext()->GetMaxHP());
|
SetMaxHP(GetMaxHP() + dto.item_meta->_max_hp * GetBattleContext()->GetMaxHP());
|
||||||
SetHP(GetHP() + dto.item_meta->_max_hp * GetBattleContext()->GetMaxHP());
|
SetHP(GetHP() + dto.item_meta->_max_hp * GetBattleContext()->GetMaxHP());
|
||||||
room->frame_event.AddPropChg
|
room->frame_event.AddPropChg
|
||||||
|
Loading…
x
Reference in New Issue
Block a user