mitigation_modifier sint16 added to info struct to allow modification of mitigation after the base is obtained from items
This commit is contained in:
parent
abfba27112
commit
b8738480b2
@ -189,6 +189,7 @@ void Entity::MapInfoStruct()
|
|||||||
get_int16_funcs["cur_mitigation"] = l::bind(&InfoStruct::get_cur_mitigation, &info_struct);
|
get_int16_funcs["cur_mitigation"] = l::bind(&InfoStruct::get_cur_mitigation, &info_struct);
|
||||||
get_int16_funcs["max_mitigation"] = l::bind(&InfoStruct::get_max_mitigation, &info_struct);
|
get_int16_funcs["max_mitigation"] = l::bind(&InfoStruct::get_max_mitigation, &info_struct);
|
||||||
get_int16_funcs["mitigation_base"] = l::bind(&InfoStruct::get_mitigation_base, &info_struct);
|
get_int16_funcs["mitigation_base"] = l::bind(&InfoStruct::get_mitigation_base, &info_struct);
|
||||||
|
get_sint16_funcs["mitigation_modifier"] = l::bind(&InfoStruct::get_mitigation_modifier, &info_struct);
|
||||||
get_int16_funcs["avoidance_display"] = l::bind(&InfoStruct::get_avoidance_display, &info_struct);
|
get_int16_funcs["avoidance_display"] = l::bind(&InfoStruct::get_avoidance_display, &info_struct);
|
||||||
get_float_funcs["cur_avoidance"] = l::bind(&InfoStruct::get_cur_avoidance, &info_struct);
|
get_float_funcs["cur_avoidance"] = l::bind(&InfoStruct::get_cur_avoidance, &info_struct);
|
||||||
get_int16_funcs["base_avoidance_pct"] = l::bind(&InfoStruct::get_base_avoidance_pct, &info_struct);
|
get_int16_funcs["base_avoidance_pct"] = l::bind(&InfoStruct::get_base_avoidance_pct, &info_struct);
|
||||||
@ -395,6 +396,7 @@ void Entity::MapInfoStruct()
|
|||||||
set_int16_funcs["cur_mitigation"] = l::bind(&InfoStruct::set_cur_mitigation, &info_struct, l::_1);
|
set_int16_funcs["cur_mitigation"] = l::bind(&InfoStruct::set_cur_mitigation, &info_struct, l::_1);
|
||||||
set_int16_funcs["max_mitigation"] = l::bind(&InfoStruct::set_max_mitigation, &info_struct, l::_1);
|
set_int16_funcs["max_mitigation"] = l::bind(&InfoStruct::set_max_mitigation, &info_struct, l::_1);
|
||||||
set_int16_funcs["mitigation_base"] = l::bind(&InfoStruct::set_mitigation_base, &info_struct, l::_1);
|
set_int16_funcs["mitigation_base"] = l::bind(&InfoStruct::set_mitigation_base, &info_struct, l::_1);
|
||||||
|
set_sint16_funcs["mitigation_modifier"] = l::bind(&InfoStruct::set_mitigation_modifier, &info_struct, l::_1);
|
||||||
set_int16_funcs["avoidance_display"] = l::bind(&InfoStruct::set_avoidance_display, &info_struct, l::_1);
|
set_int16_funcs["avoidance_display"] = l::bind(&InfoStruct::set_avoidance_display, &info_struct, l::_1);
|
||||||
set_float_funcs["cur_avoidance"] = l::bind(&InfoStruct::set_cur_avoidance, &info_struct, l::_1);
|
set_float_funcs["cur_avoidance"] = l::bind(&InfoStruct::set_cur_avoidance, &info_struct, l::_1);
|
||||||
set_int16_funcs["base_avoidance_pct"] = l::bind(&InfoStruct::set_base_avoidance_pct, &info_struct, l::_1);
|
set_int16_funcs["base_avoidance_pct"] = l::bind(&InfoStruct::set_base_avoidance_pct, &info_struct, l::_1);
|
||||||
@ -1469,6 +1471,10 @@ void Entity::CalculateBonuses(){
|
|||||||
|
|
||||||
info->set_cur_mitigation(info->get_mitigation_base());
|
info->set_cur_mitigation(info->get_mitigation_base());
|
||||||
|
|
||||||
|
sint32 temp_mitigation = static_cast<sint32>(info->get_cur_mitigation()) + info->get_mitigation_modifier();
|
||||||
|
temp_mitigation = std::max(temp_mitigation, 0);
|
||||||
|
info->set_cur_mitigation(static_cast<int16>(temp_mitigation));
|
||||||
|
|
||||||
int32 calc_mit_cap = effective_level * rule_manager.GetZoneRule(GetZoneID(), R_Combat, CalculatedMitigationCapLevel)->GetInt32();
|
int32 calc_mit_cap = effective_level * rule_manager.GetZoneRule(GetZoneID(), R_Combat, CalculatedMitigationCapLevel)->GetInt32();
|
||||||
info->set_max_mitigation(calc_mit_cap);
|
info->set_max_mitigation(calc_mit_cap);
|
||||||
|
|
||||||
|
@ -116,6 +116,7 @@ struct InfoStruct{
|
|||||||
cur_mitigation_ = 0;
|
cur_mitigation_ = 0;
|
||||||
max_mitigation_ = 0;
|
max_mitigation_ = 0;
|
||||||
mitigation_base_ = 0;
|
mitigation_base_ = 0;
|
||||||
|
mitigation_modifier_ = 0;
|
||||||
avoidance_display_ = 0;
|
avoidance_display_ = 0;
|
||||||
cur_avoidance_ = 0.0f;
|
cur_avoidance_ = 0.0f;
|
||||||
base_avoidance_pct_ = 0;
|
base_avoidance_pct_ = 0;
|
||||||
@ -322,6 +323,7 @@ struct InfoStruct{
|
|||||||
cur_mitigation_ = oldStruct->get_cur_mitigation();
|
cur_mitigation_ = oldStruct->get_cur_mitigation();
|
||||||
max_mitigation_ = oldStruct->get_max_mitigation();
|
max_mitigation_ = oldStruct->get_max_mitigation();
|
||||||
mitigation_base_ = oldStruct->get_mitigation_base();
|
mitigation_base_ = oldStruct->get_mitigation_base();
|
||||||
|
mitigation_modifier_ = oldStruct->get_mitigation_modifier();
|
||||||
avoidance_display_ = oldStruct->get_avoidance_display();
|
avoidance_display_ = oldStruct->get_avoidance_display();
|
||||||
cur_avoidance_ = oldStruct->get_cur_avoidance();
|
cur_avoidance_ = oldStruct->get_cur_avoidance();
|
||||||
base_avoidance_pct_ = oldStruct->get_base_avoidance_pct();
|
base_avoidance_pct_ = oldStruct->get_base_avoidance_pct();
|
||||||
@ -523,6 +525,7 @@ struct InfoStruct{
|
|||||||
int16 get_max_mitigation() { std::lock_guard<std::mutex> lk(classMutex); return max_mitigation_; }
|
int16 get_max_mitigation() { std::lock_guard<std::mutex> lk(classMutex); return max_mitigation_; }
|
||||||
|
|
||||||
int16 get_mitigation_base() { std::lock_guard<std::mutex> lk(classMutex); return mitigation_base_; }
|
int16 get_mitigation_base() { std::lock_guard<std::mutex> lk(classMutex); return mitigation_base_; }
|
||||||
|
sint16 get_mitigation_modifier() { std::lock_guard<std::mutex> lk(classMutex); return mitigation_modifier_; }
|
||||||
int16 get_avoidance_display() { std::lock_guard<std::mutex> lk(classMutex); return avoidance_display_; }
|
int16 get_avoidance_display() { std::lock_guard<std::mutex> lk(classMutex); return avoidance_display_; }
|
||||||
float get_cur_avoidance() { std::lock_guard<std::mutex> lk(classMutex); return cur_avoidance_; }
|
float get_cur_avoidance() { std::lock_guard<std::mutex> lk(classMutex); return cur_avoidance_; }
|
||||||
int16 get_base_avoidance_pct() { std::lock_guard<std::mutex> lk(classMutex); return base_avoidance_pct_; }
|
int16 get_base_avoidance_pct() { std::lock_guard<std::mutex> lk(classMutex); return base_avoidance_pct_; }
|
||||||
@ -752,6 +755,7 @@ struct InfoStruct{
|
|||||||
void set_max_mitigation(int16 value) { std::lock_guard<std::mutex> lk(classMutex); max_mitigation_ = value; }
|
void set_max_mitigation(int16 value) { std::lock_guard<std::mutex> lk(classMutex); max_mitigation_ = value; }
|
||||||
void set_mitigation_base(int16 value) { std::lock_guard<std::mutex> lk(classMutex); mitigation_base_ = value; }
|
void set_mitigation_base(int16 value) { std::lock_guard<std::mutex> lk(classMutex); mitigation_base_ = value; }
|
||||||
void add_mitigation_base(int16 value) { std::lock_guard<std::mutex> lk(classMutex); mitigation_base_ += value; }
|
void add_mitigation_base(int16 value) { std::lock_guard<std::mutex> lk(classMutex); mitigation_base_ += value; }
|
||||||
|
void set_mitigation_modifier(sint16 value) { std::lock_guard<std::mutex> lk(classMutex); mitigation_modifier_ = value; }
|
||||||
|
|
||||||
void set_avoidance_display(int16 value) { std::lock_guard<std::mutex> lk(classMutex); avoidance_display_ = value; }
|
void set_avoidance_display(int16 value) { std::lock_guard<std::mutex> lk(classMutex); avoidance_display_ = value; }
|
||||||
void set_cur_avoidance(float value) { std::lock_guard<std::mutex> lk(classMutex); cur_avoidance_ = value; }
|
void set_cur_avoidance(float value) { std::lock_guard<std::mutex> lk(classMutex); cur_avoidance_ = value; }
|
||||||
@ -1076,6 +1080,7 @@ private:
|
|||||||
int16 cur_mitigation_;
|
int16 cur_mitigation_;
|
||||||
int16 max_mitigation_;
|
int16 max_mitigation_;
|
||||||
int16 mitigation_base_;
|
int16 mitigation_base_;
|
||||||
|
sint16 mitigation_modifier_;
|
||||||
int16 avoidance_display_;
|
int16 avoidance_display_;
|
||||||
float cur_avoidance_;
|
float cur_avoidance_;
|
||||||
int16 base_avoidance_pct_;
|
int16 base_avoidance_pct_;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user