private void On_GEMOnHitEnemy(On.RoR2.GlobalEventManager.orig_OnHitEnemy orig, GlobalEventManager self, DamageInfo damageInfo, GameObject victim) { orig(self, damageInfo, victim); if (!NetworkServer.active || !damageInfo.attacker) { return; } CharacterBody body = damageInfo.attacker.GetComponent <CharacterBody>(); if (!body || !body.HasBuff(pillageBuff)) { return; } CharacterMaster chrm = body.master; if (!chrm) { return; } int mamt = Run.instance.GetDifficultyScaledCost(body.GetBuffCount(pillageBuff)); if (Compat_ShareSuite.enabled && Compat_ShareSuite.MoneySharing()) { Compat_ShareSuite.GiveMoney((uint)mamt); } else { chrm.GiveMoney((uint)mamt); } }
private void FixedUpdate() { var body = this.gameObject.GetComponent <CharacterBody>(); if (body.inventory && body.master) { if (icnt > 0) { moneyBuffer += Time.fixedDeltaTime * LifeSavings.instance.gainPerSec * ((icnt < LifeSavings.instance.invertCount)?(1f / (float)(LifeSavings.instance.invertCount - icnt + 1)):(icnt - LifeSavings.instance.invertCount + 1)); } //Disable during pre-teleport money drain so it doesn't softlock //Accumulator is emptied into actual money variable whenever a tick passes and it has enough for a change in integer value if (moneyBuffer >= 1.0f && !holdIt && (LifeSavings.instance.ignoreTimestop || !Run.instance.isRunStopwatchPaused)) { if (Compat_ShareSuite.enabled && Compat_ShareSuite.MoneySharing()) { Compat_ShareSuite.GiveMoney((uint)Math.Floor(moneyBuffer)); } else { body.master.GiveMoney((uint)Math.Floor(moneyBuffer)); } moneyBuffer %= 1.0f; } } }
private void On_GEMOnHitEnemy(On.RoR2.GlobalEventManager.orig_OnHitEnemy orig, GlobalEventManager self, DamageInfo damageInfo, GameObject victim) { orig(self, damageInfo, victim); if (!NetworkServer.active || !damageInfo.attacker) { return; } CharacterBody body = damageInfo.attacker.GetComponent <CharacterBody>(); if (!body || !body.HasBuff(pillageBuff)) { return; } CharacterMaster chrm = body.master; if (!chrm) { return; } float mamt = (float)Run.instance.GetDifficultyScaledCost(body.GetBuffCount(pillageBuff)) * amount; if (!body.gameObject.TryGetComponent <PillageMoneyBuffer>(out var pmb)) { pmb = body.gameObject.AddComponent <PillageMoneyBuffer>(); } var bufferAmt = pmb.AddMoneyAndEmptyBuffer(Mathf.Max(mamt, 0f)); if (Compat_ShareSuite.enabled && Compat_ShareSuite.MoneySharing()) { Compat_ShareSuite.GiveMoney(bufferAmt); } else { chrm.GiveMoney(bufferAmt); } }
private void FixedUpdate() { if (!NetworkServer.active) { return; } if (icnt > 0) { moneyBuffer += Time.fixedDeltaTime * CalculateMoneyIncrease(icnt); } //Disable during pre-teleport money drain so it doesn't softlock //Accumulator is emptied into actual money variable whenever a tick passes and it has enough for a change in integer value if (moneyBuffer >= 1.0f && !SceneExitController.isRunning && (LifeSavings.instance.ignoreTimestop || !Run.instance.isRunStopwatchPaused)) { if (Compat_ShareSuite.enabled && Compat_ShareSuite.MoneySharing()) { Compat_ShareSuite.GiveMoney((uint)Math.Floor(moneyBuffer)); } master.GiveMoney((uint)Math.Floor(moneyBuffer)); moneyBuffer %= 1.0f; } }