public void RemovePartyMember(CreatureObject Creature)
{
if (Creature.Party != this)
{
throw new ApplicationException(String.Format(
"Removing creature {0} from party, but it is not in this party."));
}
PartyMembers.Remove(Creature);
Creature.Party = null;
if (PartyLeader == Creature)
PartyLeader = null;
if (PartyMembers.Count == 0)
PartyManager.RemoveParty(this);
switch ((AIType)Creature.TacticsType)
{
case AIType.BEHAVIOR_TYPE_ANIMAL:
PartyAnimals.Remove(Creature);
break;
case AIType.BEHAVIOR_TYPE_ARCHER:
PartyArchers.Remove(Creature);
break;
case AIType.BEHAVIOR_TYPE_BUFFS:
PartyBuffs.Remove(Creature);
break;
case AIType.BEHAVIOR_TYPE_CONTROL:
PartyControls.Remove(Creature);
break;
case AIType.BEHAVIOR_TYPE_COWARD:
PartyCowards.Remove(Creature);
break;
case AIType.BEHAVIOR_TYPE_FLANK:
PartyFlanks.Remove(Creature);
break;
case AIType.BEHAVIOR_TYPE_MEDIC:
PartyMedics.Remove(Creature);
break;
case AIType.BEHAVIOR_TYPE_MINDLESS:
PartyMindless.Remove(Creature);
break;
case AIType.BEHAVIOR_TYPE_NUKE:
PartyNukes.Remove(Creature);
break;
case AIType.BEHAVIOR_TYPE_SHOCK:
PartyShocks.Remove(Creature);
break;
case AIType.BEHAVIOR_TYPE_SKIRMISH:
PartySkrimishers.Remove(Creature);
break;
case AIType.BEHAVIOR_TYPE_TANK:
PartyTanks.Remove(Creature);
break;
default:
break;
}
if (PartyMembers.Count > 0 && PartyLeader == null)
{
int nCha = 0;
foreach (CreatureObject Member in PartyMembers)
{
if (Member.Script.GetAbilityModifier(CLRScriptBase.ABILITY_CHARISMA, Member.ObjectId) > nCha)
{
nCha = Member.Script.GetAbilityModifier(CLRScriptBase.ABILITY_CHARISMA, Member.ObjectId);
PartyLeader = Member;
}
}
}
}