Conversation
#19) (#22) - Rewrites the 9-step scene into a 13-step animated sequence (~45 s total) - Trucks and tent appear first; Tower Crane spawns at t+5.5 s - FG_small_Helipad_Under_Construction animates construction from t+10.5 s to t+30.5 s - FG_small_Helipad revealed at t+30.5 s (critical); crane removed at t+35.5 s - Equipment and warehouse follow; warehouse stocked only once pad is live - Cross-step object references stored in scene._params (_craneObj, _underConstObj) - Registers Tower Crane and FG_small_Helipad_Under_Construction via registerIfAbsent - Adds FG_small_Helipad_Under_Construction to modTypes (same zip, no new modUrls) - Creates plugins/metal-farp/tests/metal_farp_spec.lua with 6 Busted assertions Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
… RECIPE.md (#23) Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
- docs/plugin-dev-guide.md + .fr.md: creation, Busted tests, DCS visual loop, CI - mkdocs.yml: guide added under 'For authors' nav section - template_spec.lua: pointer to the guide for new plugin authors Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…inject_scene (#20) playSceneAtPos hardcodes North-facing direction. Replace with a mock unit carrying the helicopter's actual forward vector so scene polar offsets are oriented along the helicopter axis. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
DCS keeps Airbase objects alive after static:destroy() for heliports. Sweep world.getAirbases() and destroy all non-airdrome entries (cat != 0). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… UC helipad - Add FG_small_Helipad_Under_Construction spawn (category=Fortifications) at t+5.5s - Add Tower Crane prop at t+0.5s, ~20m right of pad - Destroy UC at t+25.5s, immediately spawn final FG_small_Helipad - Destroy Tower Crane 5s after helipad appears (t+30.5s) - Fix delayAfterPreviousStep semantics: delay on step N controls when step N+1 runs - Document timing model in layout comment Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Reviewer's GuideImplements a timed, animated Metal FARP construction sequence, adds DCS visual test scripts and recipe, introduces unit tests for the scene model, and documents the plugin development/testing process in both English and French with MkDocs navigation updates. Sequence diagram for the animated Metal FARP construction scenesequenceDiagram
actor Pilot
participant CTLDSceneManager
participant metalFarpScene
participant TowerCrane
participant UnderConstructionPad as FG_small_Helipad_Under_Construction
participant FinalPad as FG_small_Helipad
Pilot->>CTLDSceneManager: playSceneAtPos(metalFarpScene)
CTLDSceneManager->>metalFarpScene: steps[1..3] spawn support equipment
CTLDSceneManager->>metalFarpScene: step 4 (Tower Crane)
metalFarpScene->>CTLDSceneManager: func(ctx) saves _craneObj
CTLDSceneManager->>TowerCrane: spawn static object
CTLDSceneManager->>metalFarpScene: step 5 (FG_small_Helipad_Under_Construction)
metalFarpScene->>CTLDSceneManager: func(ctx) saves _underConstObj
CTLDSceneManager->>UnderConstructionPad: spawn fortification
CTLDSceneManager->>metalFarpScene: step 6 destroy UC pad
metalFarpScene->>UnderConstructionPad: Object.isExist(obj)
metalFarpScene->>UnderConstructionPad: destroy()
CTLDSceneManager->>metalFarpScene: step 7 (final FG_small_Helipad)
CTLDSceneManager->>FinalPad: spawn heliport (critical=true)
metalFarpScene->>metalFarpScene: func(ctx) sets farpName
CTLDSceneManager->>metalFarpScene: step 8 destroy Tower Crane
metalFarpScene->>TowerCrane: Object.isExist(obj)
metalFarpScene->>TowerCrane: destroy()
CTLDSceneManager->>metalFarpScene: steps[9..13] spawn remaining objects
File-Level Changes
Possibly linked issues
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
There was a problem hiding this comment.
Hey - I've found 1 issue, and left some high level feedback:
- The documented timing in CTLD_metalFarpScene.lua and plugins/metal-farp/tests/RECIPE.md (e.g., UC pad at 10.5s, crane/ ammo at 35.5s, lights at 40s) does not match the actual delayAfterPreviousStep values in the scene steps; please reconcile the comments and recipe table with the cumulative timings from the code.
- plugins/metal-farp/tests/cleanup.lua currently destroys all static objects and non-airdrome airbases across all coalitions, which could wipe unrelated mission content; consider narrowing the cleanup to objects spawned by this scene (e.g., by namePrefix or a scene-specific tag) to make it safer to reuse.
- The "has exactly 13 steps" assertion in plugins/metal-farp/tests/metal_farp_spec.lua is quite brittle and will fail on any future step adjustment; you might prefer asserting the presence and properties of key steps (e.g., helipad spawn, UC variant, crane destroy) rather than the total count.
Prompt for AI Agents
Please address the comments from this code review:
## Overall Comments
- The documented timing in CTLD_metalFarpScene.lua and plugins/metal-farp/tests/RECIPE.md (e.g., UC pad at 10.5s, crane/ ammo at 35.5s, lights at 40s) does not match the actual delayAfterPreviousStep values in the scene steps; please reconcile the comments and recipe table with the cumulative timings from the code.
- plugins/metal-farp/tests/cleanup.lua currently destroys all static objects and non-airdrome airbases across all coalitions, which could wipe unrelated mission content; consider narrowing the cleanup to objects spawned by this scene (e.g., by namePrefix or a scene-specific tag) to make it safer to reuse.
- The "has exactly 13 steps" assertion in plugins/metal-farp/tests/metal_farp_spec.lua is quite brittle and will fail on any future step adjustment; you might prefer asserting the presence and properties of key steps (e.g., helipad spawn, UC variant, crane destroy) rather than the total count.
## Individual Comments
### Comment 1
<location path="docs/plugin-dev-guide.md" line_range="136" />
<code_context>
+**On a problem (Step 3):**
+
+1. Inject `plugins/{name}/tests/cleanup.lua`.
+2. Fix the plugin lua.
+3. Repeat from Step 1.
+
</code_context>
<issue_to_address>
**nitpick (typo):** Use "Lua" (capital L) for consistency with the rest of the document.
This instance should be capitalized to "Lua" to match usage elsewhere in the guide.
Suggested implementation:
```
2. Fix the plugin Lua.
```
If "Lua" appears elsewhere in lowercase (e.g. "lua script", "lua file") in this guide, those should be updated to "Lua" as well for consistency, following the same SEARCH/REPLACE pattern.
</issue_to_address>Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.
| **On a problem (Step 3):** | ||
|
|
||
| 1. Inject `plugins/{name}/tests/cleanup.lua`. | ||
| 2. Fix the plugin lua. |
There was a problem hiding this comment.
nitpick (typo): Use "Lua" (capital L) for consistency with the rest of the document.
This instance should be capitalized to "Lua" to match usage elsewhere in the guide.
Suggested implementation:
2. Fix the plugin Lua.
If "Lua" appears elsewhere in lowercase (e.g. "lua script", "lua file") in this guide, those should be updated to "Lua" as well for consistency, following the same SEARCH/REPLACE pattern.
Summary
Test plan
Generated with Claude Code
Summary by Sourcery
Add an animated, timed construction sequence to the Metal FARP scene and document a full plugin development and DCS visual test workflow.
New Features:
Enhancements:
Documentation:
Tests: