mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-13 18:51:29 +00:00
Bots will no longer crash when disbanding on death or normal disbanding.. HP values on bots will no longer roll over when checking STAMINA
This commit is contained in:
parent
dbd615572c
commit
22ef16947c
26
zone/bot.cpp
26
zone/bot.cpp
@ -751,9 +751,13 @@ void Bot::GenerateBaseStats() {
|
||||
this->DR = DiseaseResist;
|
||||
this->PR = PoisonResist;
|
||||
this->CR = ColdResist;
|
||||
this->PhR = 0;
|
||||
this->Corrup = CorruptionResist;
|
||||
SetBotSpellID(BotSpellID);
|
||||
this->size = BotSize;
|
||||
|
||||
this->pAggroRange = 0;
|
||||
this->pAssistRange = 0;
|
||||
}
|
||||
|
||||
void Bot::GenerateAppearance() {
|
||||
@ -1374,20 +1378,20 @@ int32 Bot::GenerateBaseHitPoints()
|
||||
// Calc Base Hit Points
|
||||
int new_base_hp = 0;
|
||||
uint32 lm = GetClassLevelFactor();
|
||||
uint32 Post255;
|
||||
uint32 NormalSTA = GetSTA();
|
||||
|
||||
int32 Post255;
|
||||
int32 NormalSTA = GetSTA();
|
||||
|
||||
if(GetOwner() && GetOwner()->CastToClient() && GetOwner()->CastToClient()->GetClientVersion() >= ClientVersion::SoD && RuleB(Character, SoDClientUseSoDHPManaEnd))
|
||||
{
|
||||
float SoDPost255;
|
||||
|
||||
|
||||
if(((NormalSTA - 255) / 2) > 0)
|
||||
SoDPost255 = ((NormalSTA - 255) / 2);
|
||||
else
|
||||
SoDPost255 = 0;
|
||||
|
||||
|
||||
int hp_factor = GetClassHPFactor();
|
||||
|
||||
|
||||
if(level < 41)
|
||||
{
|
||||
new_base_hp = (5 + (GetLevel() * hp_factor / 12) + ((NormalSTA - SoDPost255) * GetLevel() * hp_factor / 3600));
|
||||
@ -1415,7 +1419,7 @@ int32 Bot::GenerateBaseHitPoints()
|
||||
new_base_hp = (5)+(GetLevel()*lm/10) + (((NormalSTA-Post255)*GetLevel()*lm/3000)) + ((Post255*1)*lm/6000);
|
||||
}
|
||||
this->base_hp = new_base_hp;
|
||||
|
||||
|
||||
return new_base_hp;
|
||||
}
|
||||
|
||||
@ -5913,7 +5917,12 @@ bool Bot::Death(Mob *killerMob, int32 damage, uint16 spell_id, SkillUseTypes att
|
||||
g->members[j] = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Make sure group still exists if it doesnt they were already updated in RemoveBotFromGroup
|
||||
g = GetGroup();
|
||||
if (!g)
|
||||
break;
|
||||
|
||||
// update the client group
|
||||
EQApplicationPacket* outapp = new EQApplicationPacket(OP_GroupUpdate, sizeof(GroupJoin_Struct));
|
||||
GroupJoin_Struct* gu = (GroupJoin_Struct*)outapp->pBuffer;
|
||||
@ -10196,7 +10205,6 @@ int32 Bot::CalcMaxHP() {
|
||||
bot_hp += GenerateBaseHitPoints() + itembonuses.HP;
|
||||
|
||||
nd += aabonuses.MaxHP; //Natural Durability, Physical Enhancement, Planar Durability
|
||||
|
||||
bot_hp = (float)bot_hp * (float)nd / (float)10000; //this is to fix the HP-above-495k issue
|
||||
bot_hp += spellbonuses.HP + aabonuses.HP;
|
||||
|
||||
|
||||
@ -6362,7 +6362,12 @@ void Client::Handle_OP_GroupDisband(const EQApplicationPacket *app)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
group = GetGroup();
|
||||
if (!group) //We must recheck this here.. incase the final bot disbanded the party..otherwise we crash
|
||||
return;
|
||||
#endif
|
||||
|
||||
if (group->GroupCount() < 3)
|
||||
{
|
||||
group->DisbandGroup();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user