forked from woofmeow/straywild
feat: extend barrier power upgrades
This commit is contained in:
parent
37ac675399
commit
296befa1a1
4 changed files with 47 additions and 7 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue