From 965fc0d6882c8200a354575aa88d361ddc71d9ef Mon Sep 17 00:00:00 2001 From: Kistaro Windrider Date: Sun, 18 Aug 2024 01:46:39 -0700 Subject: [PATCH] major rebalances 10s generator is too slow -- 10 seconds ago is an eternity in a shmup and a player who has stopped firing should recover much faster. The generator's max capacity is much lower and shield cost has been rebalanced to match. The Protron is much more expensive to fire, it was previously just easy mode. Shields now recover faster _once they start recovering_ (every second if energy is available) but getting hit causes a "penalty cooldown" that is much longer than the standard recovery interval. This behavior is taken from Halo and basically every modern FPS that came after it; it's unlike Tyrian, which had consistent shield recovery behavior. But I think Halo's rule plays much better. --- vacuum_gambit.p8 | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/vacuum_gambit.p8 b/vacuum_gambit.p8 index e3bbbd6..d4e6490 100644 --- a/vacuum_gambit.p8 +++ b/vacuum_gambit.p8 @@ -413,13 +413,12 @@ ship_m = { shield = 0, maxshield = 0, shieldcost = 32767.9, - shieldcooldown = 0x0.00a0, + shieldcooldown = 0x0.003c,--1s + shieldpenalty = 0x0.012c, --5s - -- default generator behavior: - -- 10 seconds for a full charge - max_power = 600, - power = 600, - generator = 1, -- power gen per frame + max_power = 120, + power = 120, + generator = 2, -- power gen per frame slip = true, -- most enemies slide @@ -538,7 +537,7 @@ end function ship_m:hitsomething(dmg) if (dmg <= 0) return false - self.shield_refresh_ready = lframe + self.shieldcooldown + self.shield_refresh_ready = lframe + self.shieldpenalty if self.shield >= dmg then self.shield -= dmg self:ow(true) @@ -772,7 +771,7 @@ mknew(protron) protron_gun = gun_base.new{ icon = 25, enemy = false, - power = 35, + power = 60, cooldown = 0x0.000f, -- frames between shots ammo = nil, maxammo = nil, @@ -876,8 +875,8 @@ player = ship_m.new{ maxhp = 3, -- player only; other ships never heal shield = 2, -- regenerates, using power maxshield = 2, - shieldcost = 300, -- power cost to refill shield - generator = 1.5, -- 1 feels too slow + shieldcost = 60, -- power cost to refill shield + generator = 2, -- gun main_gun = nil, -- assign at spawn time @@ -1569,10 +1568,12 @@ shields - ship.shieldcost per point of shields. shieldcooldown is the interval between restoring shield points, which -is reset when a ship takes -damage (regardless of whether -that damage is stopped by the -shield or not). +is reset to shieldpenalty when a +ship takes damage (regardless of +whether that damage is stopped +by the shield or not). +shieldpenalty is much worse than +shieldcooldown (hALO shield). therefore: * damaged ships spend power