示例#1
0
        /// <summary>
        /// Gets effect template from classic effect record data, if one is available.
        /// </summary>
        /// <param name="effectRecordData">Classic effect record data.</param>
        /// <returns>IEntityEffect of template found or null if no matching template found.</returns>
        public IEntityEffect GetEffectTemplateFromClassicEffectRecordData(SpellRecord.EffectRecordData effectRecordData)
        {
            // Ignore unused effect
            if (effectRecordData.type == -1)
            {
                return(null);
            }

            // Get effect type/subtype
            int type, subType;

            type    = effectRecordData.type;
            subType = (effectRecordData.subType < 0) ? 255 : effectRecordData.subType; // Entity effect keys use 255 instead of -1 for subtype

            // Check if effect template is implemented for this slot - instant fail if effect not implemented
            int classicKey = BaseEntityEffect.MakeClassicKey((byte)type, (byte)subType);

            // Attempt to find the effect template
            IEntityEffect result = GameManager.Instance.EntityEffectBroker.GetEffectTemplate(classicKey);

            if (result == null)
            {
                Debug.LogWarningFormat("Could not find effect template for type={0} subType={1}", type, subType);
            }

            return(result);
        }
示例#2
0
        /// <summary>
        /// Checks if effect bundle contains an effect matching a classic effect record.
        /// </summary>
        /// <param name="effectRecord">Effect record to compare with native bundle effects.</param>
        /// <returns>True if bundle contains effect matching classic effect record.</returns>
        public bool HasMatchForClassicEffect(SpellRecord.EffectRecordData effectRecord)
        {
            int classicKey = BaseEntityEffect.MakeClassicKey((byte)effectRecord.type, (byte)effectRecord.subType);

            foreach (EffectEntry entry in settings.Effects)
            {
                IEntityEffect effectTemplate = GameManager.Instance.EntityEffectBroker.GetEffectTemplate(entry.Key);
                if (effectTemplate.Properties.ClassicKey == classicKey)
                {
                    return(true);
                }
            }

            return(false);
        }
示例#3
0
        /// <summary>
        /// Gets effect template from classic effect record data, if one is available.
        /// </summary>
        /// <param name="effectRecordData">Classic effect record data.</param>
        /// <returns>IEntityEffect of template found or null if no matching template found.</returns>
        public IEntityEffect GetEffectTemplateFromClassicEffectRecordData(SpellRecord.EffectRecordData effectRecordData)
        {
            // Ignore unused effect
            if (effectRecordData.type == -1)
            {
                return(null);
            }

            // Get effect type/subtype
            int type, subType;

            type    = effectRecordData.type;
            subType = (effectRecordData.subType < 0) ? 255 : effectRecordData.subType; // Entity effect keys use 255 instead of -1 for subtype

            // Check if effect template is implemented for this slot - instant fail if effect not implemented
            int classicKey = BaseEntityEffect.MakeClassicKey((byte)type, (byte)subType);

            return(GameManager.Instance.EntityEffectBroker.GetEffectTemplate(classicKey));
        }