Don't allow disbanding mercs that have their owner in combat if the rule is set.

This commit is contained in:
E Spause 2017-03-15 06:52:16 -04:00
parent b2c6bb4df5
commit f8d000d660

View File

@ -6582,8 +6582,7 @@ void Client::Handle_OP_GroupDisband(const EQApplicationPacket *app)
if (group->IsLeader(this)) if (group->IsLeader(this))
{ {
// the group leader can kick other members out of the group... // the group leader can kick other members out of the group...
if (memberToDisband->IsClient()) if (memberToDisband->IsClient()) {
{
group->DelMember(memberToDisband, false); group->DelMember(memberToDisband, false);
Client* memberClient = memberToDisband->CastToClient(); Client* memberClient = memberToDisband->CastToClient();
Merc* memberMerc = memberToDisband->CastToClient()->GetMerc(); Merc* memberMerc = memberToDisband->CastToClient()->GetMerc();
@ -6592,9 +6591,19 @@ void Client::Handle_OP_GroupDisband(const EQApplicationPacket *app)
memberMerc->MercJoinClientGroup(); memberMerc->MercJoinClientGroup();
} }
} }
else if (memberToDisband->IsMerc()) else if (memberToDisband->IsMerc()) {
{ //Can only remove mercs that aren't in combat if the rule is set.
memberToDisband->CastToMerc()->Suspend(); if (!RuleB(Mercs, AllowMercSuspendInCombat)) {
Mob* mercOwner = memberToDisband->CastToMerc()->GetOwner();
if (mercOwner && mercOwner->IsClient()) {
if (mercOwner->CastToClient()->CheckCanSpawnMerc(mercOwner->CastToClient()->GetMercInfo().MercTemplateID)) {
memberToDisband->CastToMerc()->Suspend();
}
}
}
else {
memberToDisband->CastToMerc()->Suspend();
}
} }
} }
else else