Example #1
0
        // Token: 0x06000026 RID: 38 RVA: 0x00003C9C File Offset: 0x00001E9C
        public static void StaticActivate(Character character, object[] _infos, Effect instance)
        {
            float localRangeSquared = 100f;
            Dictionary <Character, float> dictionary = new Dictionary <Character, float>();
            List <Character> list = new List <Character>();

            CharacterManager.Instance.FindCharactersInRange(character.CenterPosition, CelestialSurge.range + 10f, ref list);
            list = (from c in list
                    where c.Faction != character.Faction
                    select c).ToList <Character>();
            using (IEnumerator <Character> enumerator = (from c in list
                                                         where c.StatusEffectMngr.HasStatusEffect("Radiating")
                                                         select c).GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    Character chr = enumerator.Current;
                    float     num = CelestialSurge.AmpDamage(character, Radiating.sumTicks(chr.StatusEffectMngr.GetStatusEffectOfName("Radiating").RemainingLifespan) + 40f, DamageType.Types.Electric);
                    IEnumerable <Character> source = list;

                    foreach (Character character2 in source.Where(c => (c.transform.position - chr.transform.position).sqrMagnitude <= localRangeSquared))
                    {
                        bool flag = !character2.Invincible;
                        if (flag)
                        {
                            float num2;
                            dictionary[character2] = (dictionary.TryGetValue(character2, out num2) ? num2 : 0f) + num;
                        }
                    }
                }
            }
            foreach (KeyValuePair <Character, float> keyValuePair in dictionary)
            {
                DamageList damageList = new DamageList(DamageType.Types.Electric, keyValuePair.Value);
                keyValuePair.Key.Stats.GetMitigatedDamage(null, ref damageList);
                keyValuePair.Key.Stats.ReceiveDamage(damageList.TotalDamage);
                bool flag2 = damageList.TotalDamage > 55f;
                if (flag2)
                {
                    keyValuePair.Key.AutoKnock(true, Vector3.zero);
                }
                else
                {
                    CasualStagger.Stagger(keyValuePair.Key);
                }
            }
        }
        public static void Prefix(StatusEffectManager __instance, StatusEffect _statusEffect, out StatusData __state)
        {
            __state = null;
            bool flag = _statusEffect.IdentifierName == Templar.Instance.radiatingInstance.IdentifierName && __instance.HasStatusEffect(_statusEffect.IdentifierName);

            if (flag)
            {
                __state = _statusEffect.StatusData;
                _statusEffect.StatusData = new StatusData(__state);
                float remainingLifespan = __instance.GetStatusEffectOfName(_statusEffect.IdentifierName).RemainingLifespan;
                float num  = (_statusEffect.RemainingLifespan != 0f) ? _statusEffect.RemainingLifespan : _statusEffect.StartLifespan;
                float num2 = Radiating.sumTicks(remainingLifespan);
                float num3 = Radiating.sumTicks(num);
                num = Radiating.sumToRemain(num2 + num3);
                _statusEffect.StatusData.LifeSpan = num;
            }
        }