Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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;
                }
            }
        }
Ejemplo n.º 3
0
        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);
            }
        }
Ejemplo n.º 4
0
 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;
     }
 }