Пример #1
0
        private void SpawnLightningPillar(On.RoR2.GlobalEventManager.orig_OnHitAll orig, RoR2.GlobalEventManager self, RoR2.DamageInfo damageInfo, GameObject hitObject)
        {
            if (damageInfo.procCoefficient == 0f || damageInfo.rejected)
            {
                return;
            }

            var attacker = damageInfo.attacker;

            if (attacker)
            {
                var body = attacker.GetComponent <CharacterBody>();
                if (body)
                {
                    if (body.HasBuff(EliteBuffIndex))
                    {
                        float   damageCoefficient2 = 0.5f;
                        float   damage             = Util.OnHitProcDamage(damageInfo.damage, body.damage, damageCoefficient2);
                        float   force    = 0f;
                        Vector3 position = damageInfo.position;
                        ProjectileManager.instance.FireProjectile(HyperchargedProjectile, position, Quaternion.identity, damageInfo.attacker, damage, force, damageInfo.crit, DamageColorIndex.Item, null, -1f);
                    }
                }
            }
        }
Пример #2
0
 private void GlobalEventManager_OnHitAll(On.RoR2.GlobalEventManager.orig_OnHitAll orig, GlobalEventManager self, DamageInfo damageInfo, GameObject hitObject)
 {
     orig(self, damageInfo, hitObject);
     if (damageInfo.attacker)
     {
         var com = damageInfo.attacker.GetComponent <AccuracyTracker>();
         if (com)
         {
             com.hitAllCount++;
         }
     }
 }
Пример #3
0
        static public void ModdedHitAll(On.RoR2.GlobalEventManager.orig_OnHitAll orig, GlobalEventManager self, DamageInfo damageInfo, GameObject victim)
        {
            if ((double)damageInfo.procCoefficient == 0.0)
            {
                return;
            }
            int Host = NetworkServer.active ? 1 : 0;

            if (!(bool)((UnityEngine.Object)damageInfo.attacker))
            {
                return;
            }
            CharacterBody component = damageInfo.attacker.GetComponent <CharacterBody>();

            if (!(bool)((UnityEngine.Object)component))
            {
                return;
            }
            CharacterMaster master = component.master;

            if (!(bool)((UnityEngine.Object)master))
            {
                return;
            }
            Inventory inventory = master.inventory;

            if (!(bool)((UnityEngine.Object)master.inventory))
            {
                return;
            }
            damageInfo.procChainMask.LinkToManager();


            ModItemManager.OnHitAllEffects(self, damageInfo, victim);

            //Buff
            if ((component.HasBuff(BuffIndex.AffixBlue) ? 1 : 0) <= 0)
            {
                return;
            }
            float   damage   = damageInfo.damage * 0.5f;
            float   force    = 0.0f;
            Vector3 position = damageInfo.position;

            #pragma warning disable CS0618 //Obsolete warning
            ProjectileManager.instance.FireProjectile(Resources.Load <GameObject>("Prefabs/Projectiles/LightningStake"), position, Quaternion.identity, damageInfo.attacker, damage, force, damageInfo.crit, DamageColorIndex.Item, (GameObject)null, -1f);
            #pragma warning restore CS0618

            damageInfo.procChainMask.UnlinkToManager();
        }