Skip to content

Custom Projectiles 1.8.16 — Mangonel range tester

Pre-release
Pre-release

Choose a tag to compare

@Krarilotus Krarilotus released this 02 Oct 21:21

TL;DR: 1.8.16 provisional tester fixes explicit manual range being ignored without a custom reload interval. It extends the existing acquisition guard/immutable profile flag and exact range helper; no new hook, binding, dispatcher, flight solver, cache or persistent block. Includes Monsterfish's supplied Reconquista settings with duplicate keys consolidated, preserving their last values and every reload/spread value.

Downloads: module ZIP · VS Code schema · full vanilla YAML · standard Reconquista YAML · long-range flight example · Monsterfish supplied settings. GM dependency: GM owner 0.3.1 ZIP. ZIP SHA-256 07dedeb75cce990397079aec93036adb5bda40078941d54b1becc10140c9e73d; all six artifacts have checksums.

The supplied Mangonel block uses native pebbles: range 30, interval 100, eight shots, inaccuracy 0 and spread 48. Native pebbles already solve launch speed for each prepared aim. Exactly 30 tiles is accepted; 30 plus one eighth-tile is rejected. All eight native pebble flights finish within one tile of their scattered flat-ground aim, with identical normal/Extreme results. spread 48 intentionally adds up to six tiles per axis around the selected target, so extra impacts may lie beyond its 30-tile target radius. No physics override or Rebalancer activation is needed for this preset. Set spread to zero explicitly if all shots should share the exact aim. Native animation sets the achievable reload minimum; interval 100 cannot skip those frames.

Manual range now works for supported native shooters independently of interval or sync_to_animation. strict_range false disables the correction; native/omitted range without a configured timer retains original game behavior. AI-only human profiles pass through. Native acquisition prepares the aim exactly once, then the existing range helper restricts admission. Native projectile allocation, ownership, damage, cleanup and RNG order remain with their owners. Existing animation/refund behavior is retained for native-timed wind-ups. No UCP2-Legacy source change. Schema/guide and all nine short preview translations explain target range versus scatter; GUI remains one Balance Changes file picker.

Testing:

  1. Install this tester with UCP 3.0.7+ and its existing map-extensions/protocol/UI 1.0.1+/GM-owner 0.3.1 dependencies. Keep Monsterfish YAML beside the schema, select it in Customizations > Balance Changes and restart. This is an unsigned developer tester, not a signed Store release.
  2. Manually target a clear unit exactly 30 tiles from a manned Mangonel, then at 30 plus one eighth-tile: the boundary target must fire, the outside target must not start an out-of-range wind-up. Retarget inside range and verify normal turning/firing. Repeat ground/wall/building orders, uphill/downhill, moving targets and all five siege types in both game families.
  3. With supplied spread 48, extra pebbles may impact beyond the selected-target circle. Explicit spread 0 should remove this additional dispersion. Inaccuracy 0 already removes primary aim error. Verify native flight and damage in the rendered game; do not infer damage from an emulated flight alone.
  4. Try Mangonel range 3 with no interval and with sync_to_animation false: reject a manual target beyond three tiles before wind-up. strict_range false must restore native admission; native/omitted range must retain native reload behavior. Repeat fortification profiles and ai_only true with human owners.
  5. Existing regression checks remain relevant: edited format-5 saves should load/reset obsolete module queues, unchanged settings resume normally, strict policy rejects changes, custom graphics definitions must match, target ammo rules preserve native manual/cow behavior. Compare identical files in paired multiplayer and recorder playback before acceptance.

Validation: 31 focused native/config/save regressions pass, including four new Mangonel tests, six flight API tests with 120 native flight cases across both 1.41 families, previous save/manual-range fixes and three manual-only policy cases. The supplied eight-pebble test executes the real Mangonel firing handler, projectile allocator, native velocity solver and movement/collision. 23 GUI/archive tests pass for the 50-file package and nine locales. Owner/binding/final-diff review is in NATIVE-AUDIT.md. All twelve published assets are downloaded and byte-verified by the publication script.

Acceptance remains provisional: native desktop bindings are unavailable; no slot is held. Actual input/cursor range presentation, rendered flight/impact/damage, live save retuning, paired multiplayer/replay, crowded performance and wider executable variants remain unverified. Runtime startup diagnostics remain English; translated preview help awaits human review. The separate trebuchet aiming/damage report is not claimed fixed. Store recipe remains pinned to merged 1.8.12 until source/dependency/live acceptance.

Included 1.8.13–1.8.15 features: optional ammo_by_target units/groups and named unit_groups; Reconquista regular ammo against siege; default format-5 gameplay save retuning with strict OFF control; native-timed manual range admission/cancellation; optional global projectile_physics through active Rebalancer 1.1.3+ apply_rebalance and framework afterInit. Fixed-angle flight tuning uses the native speed solver for otherwise short-range replacements. Physics stays opt-in/global per type; existing configs/native values do not activate Rebalancer. Full inert native vanilla reference, schema, README and all nine GUI catalogs are included.