public override void TakeDamage(GameObject source, eDamageType damageType, int damageAmount, int criticalAmount) { if (!m_openDead && Realm != eRealm.Door) { base.TakeDamage(source, damageType, damageAmount, criticalAmount); double damageDealt = damageAmount + criticalAmount; } GamePlayer attackerPlayer = source as GamePlayer; if (attackerPlayer != null) { if (!m_openDead && Realm != eRealm.Door) { attackerPlayer.Out.SendMessage(LanguageMgr.GetTranslation(attackerPlayer.Client.Account.Language, "GameDoor.NowOpen", Name), eChatType.CT_System, eChatLoc.CL_SystemWindow); } if (!m_openDead && Realm != eRealm.Door) { Health -= damageAmount + criticalAmount; if (!IsAlive) { attackerPlayer.Out.SendMessage(LanguageMgr.GetTranslation(attackerPlayer.Client.Account.Language, "GameDoor.NowOpen", Name), eChatType.CT_System, eChatLoc.CL_SystemWindow); Die(source); m_openDead = true; RegenDoorHealth(); if (Locked == 0) { Open(); } Group attackerGroup = attackerPlayer.Group; if (attackerGroup != null) { foreach (GameLiving living in attackerGroup.GetMembersInTheGroup()) { ((GamePlayer)living).Out.SendMessage(LanguageMgr.GetTranslation(attackerPlayer.Client.Account.Language, "GameDoor.NowOpen", Name), eChatType.CT_System, eChatLoc.CL_SystemWindow); } } } } } }
/// <summary> /// Removes a group from the manager /// </summary> /// <param name="key"></param> /// <returns></returns> public static bool RemoveGroup(object key) { Group group = null; lock (m_groups) { group = (Group)m_groups[key]; if (group == null) { return(false); } m_groups.Remove(key); } foreach (GameLiving living in group.GetMembersInTheGroup()) { group.RemoveMember(living); } return(true); }