[int64] Support for HP / Mana / End / Damage / Hate (#2091)

* Initial int64 work

* Hate 64 bit

* Update special_attacks.cpp

* Aggro / Damage / Hate int64

* NPC edit adjustments

* Fix bot compile

* More int64 adjustments

* More int64 references

* npcedit references

* aggrozone

* More int64 changes

* More int64 changes for damage

* Many more damage int64 references

* More spell damage int64 conversions

* HealDamage

* Damage fully working

* Remove debug

* Add migration

* More int64 adjustments

* Much wow, many int64

* More int64

* PR adjustments
This commit is contained in:
Chris Miles
2022-05-07 22:32:02 -05:00
committed by GitHub
parent d9c41526e8
commit f201d4c999
57 changed files with 743 additions and 708 deletions
+20 -20
View File
@@ -887,14 +887,14 @@ bool NPC::Process()
uint32 npc_sitting_regen_bonus = 0;
uint32 pet_regen_bonus = 0;
uint32 npc_regen = 0;
int32 npc_hp_regen = GetNPCHPRegen();
uint64 npc_regen = 0;
int64 npc_hp_regen = GetNPCHPRegen();
if (GetAppearance() == eaSitting) {
npc_sitting_regen_bonus += 3;
}
int32 ooc_regen_calc = 0;
int64 ooc_regen_calc = 0;
if (ooc_regen > 0) { //should pull from Mob class
ooc_regen_calc += GetMaxHP() * ooc_regen / 100;
}
@@ -934,7 +934,7 @@ bool NPC::Process()
if (GetMana() < GetMaxMana()) {
if (RuleB(NPC, UseMeditateBasedManaRegen)) {
int32 npc_idle_mana_regen_bonus = 2;
int64 npc_idle_mana_regen_bonus = 2;
uint16 meditate_skill = GetSkill(EQ::skills::SkillMeditate);
if (!IsEngaged() && meditate_skill > 0) {
uint8 clevel = GetLevel();
@@ -1818,7 +1818,7 @@ int32 NPC::GetEquipmentMaterial(uint8 material_slot) const
uint32 NPC::GetMaxDamage(uint8 tlevel)
{
uint32 dmg = 0;
uint64 dmg = 0;
if (tlevel < 40)
dmg = tlevel*2+2;
else if (tlevel < 50)
@@ -2469,7 +2469,7 @@ void NPC::ModifyNPCStat(const char *identifier, const char *new_value)
return;
}
else if (id == "max_hp") {
base_hp = atoi(val.c_str());
base_hp = std::stoull(val.c_str());
CalcMaxHP();
if (current_hp > max_hp) {
@@ -2479,7 +2479,7 @@ void NPC::ModifyNPCStat(const char *identifier, const char *new_value)
return;
}
else if (id == "max_mana") {
npc_mana = atoi(val.c_str());
npc_mana = std::stoull(val.c_str());
CalcMaxMana();
if (current_mana > max_mana) {
current_mana = max_mana;
@@ -2598,7 +2598,7 @@ void NPC::ModifyNPCStat(const char *identifier, const char *new_value)
return;
}
else if (id == "hp_regen") {
hp_regen = atoi(val.c_str());
hp_regen = strtoll(val.c_str(), nullptr, 10);
return;
}
else if (id == "hp_regen_per_second") {
@@ -2606,7 +2606,7 @@ void NPC::ModifyNPCStat(const char *identifier, const char *new_value)
return;
}
else if (id == "mana_regen") {
mana_regen = atoi(val.c_str());
mana_regen = strtoll(val.c_str(), nullptr, 10);
return;
}
else if (id == "level") {
@@ -2843,13 +2843,13 @@ void NPC::LevelScale() {
} else {
uint8 scale_adjust = 1;
base_hp += (int)(base_hp * scaling);
max_hp += (int)(max_hp * scaling);
base_hp += (int64)(base_hp * scaling);
max_hp += (int64)(max_hp * scaling);
current_hp = max_hp;
if (max_dmg) {
max_dmg += (int)(max_dmg * scaling / scale_adjust);
min_dmg += (int)(min_dmg * scaling / scale_adjust);
max_dmg += (int64)(max_dmg * scaling / scale_adjust);
min_dmg += (int64)(min_dmg * scaling / scale_adjust);
}
STR += (int)(STR * scaling / scale_adjust);
@@ -2884,8 +2884,8 @@ void NPC::LevelScale() {
AC += (int)(AC * scaling);
ATK += (int)(ATK * scaling);
base_hp += (int)(base_hp * scaling);
max_hp += (int)(max_hp * scaling);
base_hp += (int64)(base_hp * scaling);
max_hp += (int64)(max_hp * scaling);
current_hp = max_hp;
STR += (int)(STR * scaling / scale_adjust);
STA += (int)(STA * scaling / scale_adjust);
@@ -2907,8 +2907,8 @@ void NPC::LevelScale() {
if (max_dmg)
{
max_dmg += (int)(max_dmg * scaling / scale_adjust);
min_dmg += (int)(min_dmg * scaling / scale_adjust);
max_dmg += (int64)(max_dmg * scaling / scale_adjust);
min_dmg += (int64)(min_dmg * scaling / scale_adjust);
}
}
@@ -2965,7 +2965,7 @@ void NPC::SetSwarmTarget(int target_id)
return;
}
int32 NPC::CalcMaxMana()
int64 NPC::CalcMaxMana()
{
if (npc_mana == 0) {
switch (GetCasterClass()) {
@@ -3152,11 +3152,11 @@ int NPC::GetScore()
int lv = std::min(70, (int)GetLevel());
int basedmg = (lv*2)*(1+(lv / 100)) - (lv / 2);
int minx = 0;
int basehp = 0;
int64 basehp = 0;
int hpcontrib = 0;
int dmgcontrib = 0;
int spccontrib = 0;
int hp = GetMaxHP();
int64 hp = GetMaxHP();
int mindmg = min_dmg;
int maxdmg = max_dmg;
int final;