Skip to content

Dumbprojectile linear killselfdelay - #124

Merged
Andreas-W merged 3 commits into
mainfrom
dumbprojectile-linear-killselfdelay
Oct 14, 2026
Merged

Andreas-W merged 3 commits into
mainfrom
dumbprojectile-linear-killselfdelay

Conversation

@Andreas-W

Copy link
Copy Markdown
Owner

No description provided.

Andreas-W and others added 3 commits October 13, 2026 15:53
LinearFlightPath: fly a straight line at constant speed instead of the
Bezier curve (height/indent/dynamic-height settings are ignored).

KillSelfDelay: after detonation, keep the projectile alive (hidden, frozen
at the impact point) for the given time before destroy/kill, so attached
particle trails catch up instead of clipping short. Works for the weapon
exhaust and for model-condition ParticleSysBone systems via the new
DRAWABLE_STATUS_KEEP_PARTICLES_WHEN_HIDDEN flag, which W3DModelDraw honors
when starting/stopping its particle systems on hide.

While lingering the projectile:
- has physics reset and DISABLED_HELD so gravity doesn't move it
- reports projectileIsLingering() (new ProjectileUpdateInterface method),
  which ScatterShotUpdate and PointDefenseLaserUpdate use to ignore it

Both settings default off; existing data behaves as before.
Xfer version 3 saves the detonated/linger state.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
While lingering after detonation the projectile sets DISABLED_HELD to
freeze physics, but GameLogic skips update modules on disabled objects
unless they list that type in getDisabledTypesToProcess(). The behavior's
update stopped running, so the projectile was never destroyed and kept
emitting its trail particles at the impact point forever.

Process updates while DISABLED_HELD.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Main turrets are separate objects with their own weapons, so weapon
rate of fire can't stagger them. With MainTurretsFireInSequence = Yes
they take turns, one shot each: only the turn holder may fire, the
others are held every frame, and once the holder fires the turn passes
on. MainTurretSequenceDelay sets the minimum time between consecutive
shots (0 = next frame).

Adds Weapon::holdFiringUntil(), which delays the next shot and also
leaves the cached READY_TO_FIRE status (like shared reload time does).

Xfer version 3 saves the sequence state. Default off.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Andreas-W
Andreas-W merged commit 1f64dd8 into main Oct 14, 2026
1 check failed
@github-actions

Copy link
Copy Markdown

⚠️ Title/Commit Validation Failed

Invalid PR title:

  • Dumbprojectile linear killselfdelay

Invalid commit messages:

  • Add MainTurretsFireInSequence to KodiakUpdate
  • Fix lingering DumbProjectile never dying with KillSelfDelay
  • Add LinearFlightPath and KillSelfDelay to DumbProjectileBehavior
    PR titles and commit messages must follow conventional commits format:
type: Description
type(scope): Description

Allowed types: bugfix, build, chore, ci, docs, fix, feat, perf, refactor, revert, style, test, tweak, unify

See CONTRIBUTING.md for details.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant