From 9e8161963775a30720930db261f810a09653676f Mon Sep 17 00:00:00 2001 From: Pierre Wessman <4029607+pierrewessman@users.noreply.github.com> Date: Thu, 2 Oct 2025 10:20:00 +0200 Subject: [PATCH] Implement defensive chase behavior and increase rotation speed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add defensive AI: players now chase puck carriers on opposing team - Update DefensiveBehavior to check opponent possession and target puck position - Increase player rotation speed from 3 to 10 rad/s for more responsive turning - Update Claude settings permissions 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .claude/settings.local.json | 4 +++- src/config/constants.ts | 2 +- .../behaviors/defensive/DefensiveBehavior.ts | 21 +++++++++++-------- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 85be06a..b77d393 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -3,7 +3,9 @@ "allow": [ "Bash(find:*)", "Bash(cat:*)", - "Bash(pnpm run:*)" + "Bash(pnpm run:*)", + "Bash(mkdir:*)", + "Bash(git log:*)" ], "deny": [], "ask": [] diff --git a/src/config/constants.ts b/src/config/constants.ts index 2633a85..ca842ba 100644 --- a/src/config/constants.ts +++ b/src/config/constants.ts @@ -30,7 +30,7 @@ export const DEBUG = false; // Player constants export const PLAYER_RADIUS_GOALIE = 12; // pixels export const PLAYER_RADIUS_SKATER = 10; // pixels -export const PLAYER_ROTATION_SPEED = 3; // radians per second +export const PLAYER_ROTATION_SPEED = 10; // radians per second export const SPEED_SCALE_FACTOR = 10; // speed attribute (0-100) / 10 = m/s export const GOAL_DECELERATION_RATE = 0.9; // Speed multiplier reduction after goal diff --git a/src/systems/behaviors/defensive/DefensiveBehavior.ts b/src/systems/behaviors/defensive/DefensiveBehavior.ts index fa0a776..9d9a03d 100644 --- a/src/systems/behaviors/defensive/DefensiveBehavior.ts +++ b/src/systems/behaviors/defensive/DefensiveBehavior.ts @@ -27,17 +27,20 @@ export class DefensiveBehavior extends BehaviorNode { if (puck.state !== 'carried') return false; if (puck.carrier === player.id) return false; - // TODO: Check if carrier is opponent (requires team roster access) - // For now, just fail - will implement in Phase 6 - return false; + // Check if carrier is opponent (different team) + return puck.carrierTeam !== player.team; }), - // Defensive action (future implementation) - new Action((player) => ({ - type: 'idle', - targetX: player.gameX, - targetY: player.gameY - })) + // Chase the puck carrier + new Action((player, gameState) => { + const { puck } = gameState; + + return { + type: 'chase_puck', + targetX: puck.gameX, + targetY: puck.gameY + }; + }) ]); }