feat: extend barrier power upgrades

This commit is contained in:
Alexander Sellite 2026-08-17 19:06:54 -04:00
parent 37ac675399
commit 296befa1a1
4 changed files with 47 additions and 7 deletions

View file

@ -5,7 +5,7 @@ const MAX_ID_LENGTH: int = 96
const MAX_EVIDENCE_FISH_IDS: int = 256
const MAX_CAST_DISTANCE: float = 30.0
const MAX_REEL_SPEED: float = 10.0
const MAX_BARRIER_DAMAGE: int = 100
const MAX_BARRIER_DAMAGE: int = 128
const INPUT_CHANNEL: int = 3
const SNAPSHOT_CHANNEL: int = 4
const INPUT_RATE: float = 1.0 / 30.0

View file

@ -6,9 +6,17 @@ const PlayerWalletType = preload("res://economy/player_wallet.gd")
signal upgrades_changed(reel_speed_level: int, barrier_power_level: int)
const MAX_REEL_SPEED_LEVEL: int = 5
const MAX_BARRIER_POWER_LEVEL: int = 3
const MAX_BARRIER_POWER_LEVEL: int = 7
const REEL_SPEED_COSTS: Array[int] = [50, 125, 300, 650, 1250]
const BARRIER_POWER_COSTS: Array[int] = [100, 275, 700]
const BARRIER_POWER_COSTS: Array[int] = [
100,
275,
700,
1500,
3000,
6000,
12000,
]
var _reel_speed_level: int = 0
var _barrier_power_level: int = 0
@ -27,7 +35,11 @@ func get_reel_speed_multiplier() -> float:
func get_barrier_damage() -> int:
return _barrier_power_level + 1
return get_barrier_damage_for_level(_barrier_power_level)
static func get_barrier_damage_for_level(level: int) -> int:
return 1 << clampi(level, 0, MAX_BARRIER_POWER_LEVEL)
func get_next_reel_speed_cost() -> int:

View file

@ -173,12 +173,22 @@ func _validate_barrier_challenge_curve() -> void:
FishQualityType.Tier.SHINY
).y
var base_power_clicks: int = ceili(float(shiny_health) / 1.0)
var maximum_barrier_damage: int = (
PlayerFishingUpgrades.get_barrier_damage_for_level(
PlayerFishingUpgrades.MAX_BARRIER_POWER_LEVEL
)
)
var max_power_clicks: int = ceili(
float(shiny_health)
/ float(PlayerFishingUpgrades.MAX_BARRIER_POWER_LEVEL + 1)
/ float(maximum_barrier_damage)
)
assert(base_power_clicks == 400)
assert(max_power_clicks == 100)
assert(maximum_barrier_damage == 128)
assert(
NetworkFishingProtocol.MAX_BARRIER_DAMAGE
== maximum_barrier_damage
)
assert(max_power_clicks == 4)
assert(max_power_clicks < base_power_clicks)
@ -190,6 +200,22 @@ func _validate_fight_pacing_and_reel_upgrades() -> void:
var upgrades := PlayerFishingUpgrades.new()
assert(is_equal_approx(upgrades.get_reel_speed_multiplier(), 1.0))
assert(
PlayerFishingUpgrades.BARRIER_POWER_COSTS.size()
== PlayerFishingUpgrades.MAX_BARRIER_POWER_LEVEL
)
for barrier_level: int in range(
PlayerFishingUpgrades.MAX_BARRIER_POWER_LEVEL + 1
):
assert(upgrades.restore_levels(0, barrier_level))
assert(upgrades.get_barrier_damage() == 1 << barrier_level)
if barrier_level < PlayerFishingUpgrades.MAX_BARRIER_POWER_LEVEL:
assert(
upgrades.get_next_barrier_power_cost()
== PlayerFishingUpgrades.BARRIER_POWER_COSTS[barrier_level]
)
else:
assert(upgrades.get_next_barrier_power_cost() == -1)
assert(
upgrades.restore_levels(
PlayerFishingUpgrades.MAX_REEL_SPEED_LEVEL,

View file

@ -847,7 +847,9 @@ func _refresh_upgrades() -> void:
"%d damage → %d damage"
% [
_upgrades.get_barrier_damage(),
barrier_level + 2,
PlayerFishingUpgradesType.get_barrier_damage_for_level(
barrier_level + 1
),
]
)
_barrier_cost.set_amount(barrier_cost)