public static void Kill(Character character, Match match) { Regiontree tree = character.currentzone.Regiontree; MapObject regionObject; if (character.SelectedTarget > 0 && Regiontree.TryFind(character.SelectedTarget, character, out regionObject) && regionObject is Monster) { /***** //Make the Object die *****/ Actor btarget = regionObject as Actor; btarget.Status.CurrentHp = 0; btarget.OnDie(character); character.OnEnemyDie(regionObject); btarget.stance = 7; btarget.Status.Updates |= 1; /***** //Forcing updates to all surrounding objects (flusing) *****/ Predicate<Character> SendToCharacter = delegate(Character forwardTarget) { //Process some general updates if (forwardTarget.SelectedTarget == regionObject.id) Common.Actions.SelectActor(forwardTarget, regionObject as Actor); Common.Actions.UpdateStance(forwardTarget, regionObject as Actor); Common.Actions.UpdateIcon(forwardTarget, regionObject as BaseMob); return true; }; /***** //Forcing updates to all surrounding objects (searching) *****/ SendToCharacter(character); foreach (Character forwardTarget in tree.SearchActors(character, SearchFlags.Characters)) { if (forwardTarget.id == character.id) continue; SendToCharacter(forwardTarget); } /***** //Update lifecycle *****/ LifeCycle.Update(character); if (MapObject.IsPlayer(regionObject)) { LifeCycle.Update(regionObject as Character); } /*** * Check Quest ***/ if (MapObject.IsNpc(btarget)) { Quests.QuestBase.UserEliminateTarget(btarget.ModelId, character); } } else { CommonFunctions.Broadcast(character, character, "No target selected or incorrect target"); } }