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,11 +6591,21 @@ 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.
if (!RuleB(Mercs, AllowMercSuspendInCombat)) {
Mob* mercOwner = memberToDisband->CastToMerc()->GetOwner();
if (mercOwner && mercOwner->IsClient()) {
if (mercOwner->CastToClient()->CheckCanSpawnMerc(mercOwner->CastToClient()->GetMercInfo().MercTemplateID)) {
memberToDisband->CastToMerc()->Suspend(); memberToDisband->CastToMerc()->Suspend();
} }
} }
}
else {
memberToDisband->CastToMerc()->Suspend();
}
}
}
else else
{ {
// ...but other members can only remove themselves // ...but other members can only remove themselves