/// <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); }
/// <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); }
/// <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)); }