mirror of
https://github.com/EQEmu/Server.git
synced 2026-05-17 07:18:37 +00:00
[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:
+20
-20
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user