feat(multimesh): MultiMesh homing system with ability variants and to…#72
feat(multimesh): MultiMesh homing system with ability variants and to…#72AgentService merged 4 commits intomainfrom
Conversation
…ol updates Roughly implemented: - MultiMesh homing with grouped targeting and staggered updates - Fixed 3 critical bugs (stale variable, missing multiplier, magnitude loss) - Created homing ability variants (focused_seeker, seeking_volley) - Archived scene-based abilities (reuse_1, reuse_2) - Enhanced AbilityTestingPopup with missing homing properties - Updated ability display to show names instead of IDs 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
| # Extract homing configuration (once per ability activation) | ||
| if projectile_data.has("is_homing"): | ||
| _homing_enabled = projectile_data.get("is_homing", false) | ||
| _homing_mode = projectile_data.get("homing_mode", HomingMode.TRACK_TO_DEATH) | ||
| _homing_strength = projectile_data.get("homing_strength", 2.0) | ||
| _homing_group_count = projectile_data.get("homing_group_count", 10) | ||
| _homing_update_interval = projectile_data.get("homing_update_interval", 4) |
There was a problem hiding this comment.
Homing settings overwritten for all active multimesh projectiles
The projectile spawn handler stores homing configuration in _homing_enabled, _homing_mode, _homing_strength, etc. (lines 168‑174) and those same globals are consumed in _on_combat_step to steer every active projectile. When two different MultiMesh abilities fire concurrently, the most recently spawned projectile overwrites these globals and immediately changes the steering mode and strength of previously spawned projectiles. For example, casting a non-homing MultiMesh volley after a homing volley will flip _homing_enabled to false, causing the already-fired homing arrows to stop tracking their targets mid-flight. These configuration values need to be stored per projectile (or per ability batch) rather than globally to avoid cross-contamination.
Useful? React with 👍 / 👎.
…mpty lines All ability .tres files now use consistent formatting with empty lines separating: - Fire mode & rendering settings - Homing configuration (if used) - Chain/pierce/knockback mechanics - Projectile behavior (spread/speed/lifetime) - Damage & type - Cooldown & count & range - Scaling parameters - Ability metadata (id/name/description/tags/level) - Scene references (visual_scene, icon) No functional changes, formatting only. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Changed from 2-arrow focused seeker to 7-arrow spread pattern: - projectile_count: 2 → 7 - spread_angle: 25° → 180° - projectile_speed: 1200 → 600 - base_damage: 333 → 3333 - pierce_count: 2 → 0 - homing_group_count: 3 → 7 - Updated description to match current stats 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
…tion Global homing variables (_homing_enabled, _homing_mode, _homing_strength) were overwritten by most recently spawned ability, causing all active projectiles to adopt new homing behavior mid-flight. Added per-projectile arrays for homing configuration: - _projectile_homing_enabled[] / _homing_mode[] / _homing_strength[] - spawn_projectile() stores config per-projectile from projectile_data - _on_combat_step() reads per-projectile config instead of globals - Compacting logic copies per-projectile homing config Impact: Multiple concurrent abilities (homing + non-homing) now work correctly. Example: seeking_volley arrows continue tracking when volley_multimesh fires. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
…ol updates
Roughly implemented:
🤖 Generated with Claude Code