update local arena of gauntlet
This commit is contained in:
@@ -55,10 +55,10 @@ GauntletManager (NEW)
|
||||
#### `scripts/game_mode.gd`
|
||||
```gdscript
|
||||
enum Mode {
|
||||
FREEMODE = 0,
|
||||
STOP_N_GO = 1,
|
||||
TEKTON_DOORS = 2,
|
||||
GAUNTLET = 3 # NEW
|
||||
FREEMODE = 0,
|
||||
STOP_N_GO = 1,
|
||||
TEKTON_DOORS = 2,
|
||||
GAUNTLET = 3 # NEW
|
||||
}
|
||||
|
||||
# Add to from_string(), mode_to_string(), get_all_modes(), is_restricted()
|
||||
@@ -157,12 +157,12 @@ var gridmap: Node
|
||||
|
||||
# Targeting weights per phase
|
||||
var phase_weights: Array = [
|
||||
# Phase 0 (Open Arena): 1×1=60%, 1×2=40%, 2×2=0%
|
||||
{"1x1": 0.6, "1x2": 0.4, "2x2": 0.0},
|
||||
# Phase 1 (Route Pressure): 1×1=30%, 1×2=55%, 2×2=15%
|
||||
{"1x1": 0.3, "1x2": 0.55, "2x2": 0.15},
|
||||
# Phase 2 (Survival): 1×1=15%, 1×2=55%, 2×2=30%
|
||||
{"1x1": 0.15, "1x2": 0.55, "2x2": 0.30}
|
||||
# Phase 0 (Open Arena): 1×1=60%, 1×2=40%, 2×2=0%
|
||||
{"1x1": 0.6, "1x2": 0.4, "2x2": 0.0},
|
||||
# Phase 1 (Route Pressure): 1×1=30%, 1×2=55%, 2×2=15%
|
||||
{"1x1": 0.3, "1x2": 0.55, "2x2": 0.15},
|
||||
# Phase 2 (Survival): 1×1=15%, 1×2=55%, 2×2=30%
|
||||
{"1x1": 0.15, "1x2": 0.55, "2x2": 0.30}
|
||||
]
|
||||
```
|
||||
|
||||
@@ -273,22 +273,22 @@ Following the exact pattern of StopNGoManager / PortalModeManager:
|
||||
```gdscript
|
||||
# _init_managers() — Add after portal_mode_manager block:
|
||||
if LobbyManager.game_mode == "Candy Cannon Survival":
|
||||
gauntlet_manager = load("res://scripts/managers/gauntlet_manager.gd").new()
|
||||
gauntlet_manager.name = "GauntletManager"
|
||||
add_child(gauntlet_manager)
|
||||
gauntlet_manager.initialize(self, $EnhancedGridMap)
|
||||
gauntlet_manager = load("res://scripts/managers/gauntlet_manager.gd").new()
|
||||
gauntlet_manager.name = "GauntletManager"
|
||||
add_child(gauntlet_manager)
|
||||
gauntlet_manager.initialize(self, $EnhancedGridMap)
|
||||
|
||||
# _setup_host_game() — Add arena setup branch:
|
||||
elif LobbyManager.game_mode == "Candy Cannon Survival" and gauntlet_manager:
|
||||
gauntlet_manager._setup_arena()
|
||||
gauntlet_manager._setup_arena()
|
||||
|
||||
# _start_game() — Add game mode start:
|
||||
elif LobbyManager.game_mode == "Candy Cannon Survival":
|
||||
if gauntlet_manager:
|
||||
gauntlet_manager.start_game_mode()
|
||||
if goals_cycle_manager:
|
||||
var match_duration = LobbyManager.get_match_duration()
|
||||
goals_cycle_manager.start_match(float(match_duration))
|
||||
if gauntlet_manager:
|
||||
gauntlet_manager.start_game_mode()
|
||||
if goals_cycle_manager:
|
||||
var match_duration = LobbyManager.get_match_duration()
|
||||
goals_cycle_manager.start_match(float(match_duration))
|
||||
```
|
||||
|
||||
---
|
||||
@@ -319,29 +319,29 @@ elif LobbyManager.game_mode == "Candy Cannon Survival":
|
||||
```gdscript
|
||||
# In CandyCannonController._select_targets():
|
||||
func _select_targets(count: int) -> Array[Vector2i]:
|
||||
var targets: Array[Vector2i] = []
|
||||
var players = get_tree().get_nodes_in_group("Players")
|
||||
|
||||
for i in range(count):
|
||||
var roll = randf()
|
||||
var target: Vector2i
|
||||
|
||||
if roll < 0.60:
|
||||
# Near a player (not same as last targeted)
|
||||
target = _get_near_player_target(players)
|
||||
elif roll < 0.85:
|
||||
# Route-blocking (pathfinding bottleneck)
|
||||
target = _get_route_blocking_target()
|
||||
elif roll < 0.95:
|
||||
# Random non-sticky
|
||||
target = _get_random_non_sticky_target()
|
||||
else:
|
||||
# Chaos (anywhere)
|
||||
target = _get_random_target()
|
||||
|
||||
targets.append(target)
|
||||
|
||||
return targets
|
||||
var targets: Array[Vector2i] = []
|
||||
var players = get_tree().get_nodes_in_group("Players")
|
||||
|
||||
for i in range(count):
|
||||
var roll = randf()
|
||||
var target: Vector2i
|
||||
|
||||
if roll < 0.60:
|
||||
# Near a player (not same as last targeted)
|
||||
target = _get_near_player_target(players)
|
||||
elif roll < 0.85:
|
||||
# Route-blocking (pathfinding bottleneck)
|
||||
target = _get_route_blocking_target()
|
||||
elif roll < 0.95:
|
||||
# Random non-sticky
|
||||
target = _get_random_non_sticky_target()
|
||||
else:
|
||||
# Chaos (anywhere)
|
||||
target = _get_random_target()
|
||||
|
||||
targets.append(target)
|
||||
|
||||
return targets
|
||||
|
||||
# Anti-unfairness rules:
|
||||
# 1. last_targeted_player_id tracking prevents same-player targeting
|
||||
|
||||
Reference in New Issue
Block a user