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); } } } }
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++; } } }
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(); }