예제 #1
0
        internal static void AddPassiveStatisticEffectIfMissing(this MechComponentDef def, StatisticEffectData statisticData)
        {
            if (def.statusEffects != null && def.statusEffects.Any(x => statisticData.statName == x.statisticData.statName))
            {
                // passive effect already exists
                return;
            }

            var effectData = new EffectData
            {
                effectType = EffectType.StatisticEffect,
                nature     = EffectNature.Buff
            };

            effectData.durationData = new EffectDurationData
            {
                duration   = -1,
                stackLimit = -1
            };

            effectData.targetingData = new EffectTargetingData
            {
                effectTriggerType = EffectTriggerType.Passive,
                effectTargetType  = EffectTargetType.Creator
            };

            var id = def.Description.Id + "_" + statisticData.statName;

            effectData.Description   = new BaseDescriptionDef(id, statisticData.statName, "", null);
            effectData.statisticData = statisticData;

            var statusEffects = def.statusEffects == null ? new[] { effectData } : def.statusEffects.Append(effectData).ToArray();

            def.SetEffectData(statusEffects);
        }
        internal static void AddPassiveStatisticEffectIfMissing(this MechComponentDef def, StatisticEffectData statisticData)
        {
            if (def.statusEffects != null && def.statusEffects.Any(x => statisticData.statName == x.statisticData.statName))
            {
                // passive effect already exists
                return;
            }

            var effectData = CreatePassiveEffectData(def.Description.Id, statisticData);

            var statusEffects = def.statusEffects == null ? new[] { effectData } : def.statusEffects.Append(effectData).ToArray();

            def.SetEffectData(statusEffects);
        }