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_EVIDENCE_FISH_IDS: int = 256
|
||||||
const MAX_CAST_DISTANCE: float = 30.0
|
const MAX_CAST_DISTANCE: float = 30.0
|
||||||
const MAX_REEL_SPEED: float = 10.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 INPUT_CHANNEL: int = 3
|
||||||
const SNAPSHOT_CHANNEL: int = 4
|
const SNAPSHOT_CHANNEL: int = 4
|
||||||
const INPUT_RATE: float = 1.0 / 30.0
|
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)
|
signal upgrades_changed(reel_speed_level: int, barrier_power_level: int)
|
||||||
|
|
||||||
const MAX_REEL_SPEED_LEVEL: int = 5
|
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 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 _reel_speed_level: int = 0
|
||||||
var _barrier_power_level: int = 0
|
var _barrier_power_level: int = 0
|
||||||
|
|
@ -27,7 +35,11 @@ func get_reel_speed_multiplier() -> float:
|
||||||
|
|
||||||
|
|
||||||
func get_barrier_damage() -> int:
|
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:
|
func get_next_reel_speed_cost() -> int:
|
||||||
|
|
|
||||||
|
|
@ -173,12 +173,22 @@ func _validate_barrier_challenge_curve() -> void:
|
||||||
FishQualityType.Tier.SHINY
|
FishQualityType.Tier.SHINY
|
||||||
).y
|
).y
|
||||||
var base_power_clicks: int = ceili(float(shiny_health) / 1.0)
|
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(
|
var max_power_clicks: int = ceili(
|
||||||
float(shiny_health)
|
float(shiny_health)
|
||||||
/ float(PlayerFishingUpgrades.MAX_BARRIER_POWER_LEVEL + 1)
|
/ float(maximum_barrier_damage)
|
||||||
)
|
)
|
||||||
assert(base_power_clicks == 400)
|
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)
|
assert(max_power_clicks < base_power_clicks)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -190,6 +200,22 @@ func _validate_fight_pacing_and_reel_upgrades() -> void:
|
||||||
|
|
||||||
var upgrades := PlayerFishingUpgrades.new()
|
var upgrades := PlayerFishingUpgrades.new()
|
||||||
assert(is_equal_approx(upgrades.get_reel_speed_multiplier(), 1.0))
|
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(
|
assert(
|
||||||
upgrades.restore_levels(
|
upgrades.restore_levels(
|
||||||
PlayerFishingUpgrades.MAX_REEL_SPEED_LEVEL,
|
PlayerFishingUpgrades.MAX_REEL_SPEED_LEVEL,
|
||||||
|
|
|
||||||
|
|
@ -847,7 +847,9 @@ func _refresh_upgrades() -> void:
|
||||||
"%d damage → %d damage"
|
"%d damage → %d damage"
|
||||||
% [
|
% [
|
||||||
_upgrades.get_barrier_damage(),
|
_upgrades.get_barrier_damage(),
|
||||||
barrier_level + 2,
|
PlayerFishingUpgradesType.get_barrier_damage_for_level(
|
||||||
|
barrier_level + 1
|
||||||
|
),
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
_barrier_cost.set_amount(barrier_cost)
|
_barrier_cost.set_amount(barrier_cost)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue