示例#1
0
        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);
                            }
                        }
                    }
                }
            }
        }
示例#2
0
        /// <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);
        }