Example #1
0
        public bool AddObj(IStatus pStatus)
        {
            var pInfo = new StatusInfoStruct();

            pStatus.GetInfo(ref pInfo);
            if (Status.ContainsKey(pInfo.Status))
            {
                return(false); // status already exists
            }
            if (pInfo.Status < 64)
            {
                ulong flag = 1UL << (pInfo.Status - 1);
                Status.TryAdd(pInfo.Status, pStatus);
                Status0 |= flag;
            }
            else if (pInfo.Status < 128)
            {
                ulong flag = 1UL << (pInfo.Status - 1);
                Status.TryAdd(pInfo.Status, pStatus);
                Status1 |= flag;
            }

            switch (pStatus.Identity)
            {
            case FlagInt.TYRANT_AURA:
            case FlagInt.FEND_AURA:
            case FlagInt.WATER_AURA:
            case FlagInt.FIRE_AURA:
            case FlagInt.METAL_AURA:
            case FlagInt.WOOD_AURA:
            case FlagInt.EARTH_AURA:
            {
                if (m_pOwner is Character && (m_pOwner as Character).Team != null &&
                    pStatus.CasterId == m_pOwner.Identity)
                {
                    (m_pOwner as Character).Team.AddAura(pStatus);
                }
                break;
            }
            }

            if (pStatus.Identity == FlagInt.SHACKLED && m_pOwner is Character)
            {
                (m_pOwner as Character).UpdateSoulShackle(pInfo.Seconds);
            }
            else if (pStatus.Identity == FlagInt.AZURE_SHIELD && m_pOwner is Character)
            {
                (m_pOwner as Character).UpdateAzureShield(pInfo.Seconds, pInfo.Power, pStatus.Level);
            }

            var pUser = m_pOwner as Character;

            if (pUser != null)
            {
                pUser.RecalculateAttributes();
            }
            return(true);
        }
Example #2
0
        public bool GetInfo(ref StatusInfoStruct pInfo)
        {
            pInfo.Power   = m_nData;
            pInfo.Seconds = m_tKeep.GetRemain();
            pInfo.Status  = m_nStatus;
            pInfo.Times   = m_nTimes;

            return(IsValid);
        }