Skip to content

Add TARDIS Temperament - #2171

Open
Peter1169 wants to merge 4 commits into
amblelabs:mainfrom
Peter1169:feat/tardis-temperament
Open

Peter1169 wants to merge 4 commits into
amblelabs:mainfrom
Peter1169:feat/tardis-temperament

Conversation

@Peter1169

Copy link
Copy Markdown
Contributor

About the PR

This adds TARDIS Temperament as a separate configurable system for the ways a TARDIS can react to REJECT players and harmful interactions. It is the renamed and isolated version of the former "Rude TARDIS" work removed from #2166.

Exterior and access reactions

  • A landed TARDIS can track a REJECT player continuously approaching its exterior and perform a short evasive hop when it is safe to do so.
    • The handbrake, siege mode, interior occupants, nearby trusted players and the configured home area prevent evasive movement.
  • The exterior can temporarily switch to the Adaptive exterior or enable silent cloaking around a rejected player, restoring its previous state when the reaction ends or a trusted player approaches.
  • Linked non-skeleton keys can be forced out of a rejected player's hand, delayed before pickup and set the player on fire.
  • The TARDIS can close and lock its doors when a rejected player attempts to enter.
  • The telepathic circuit can reject interactions from REJECT players.
  • Handles can occasionally warn REJECT or zero-loyalty players rather than answering normally.

Immersive Portals preserves the existing directional behavior:

  • Only entry through the exterior portal is checked for a rejected player.
  • The interior portal remains usable for leaving while the door is still considered open.
  • The portal is not globally disabled when the close animation begins.

Travel and subsystem reactions

  • A flight started with only REJECT occupants can temporarily enable Left Behind and autopilot, ejecting those players before departure.
  • A TARDIS carrying only REJECT players can choose a deliberately unsafe landing position.
    • Unsafe searches are bounded and can prefer nearby hostile entities or risky terrain without producing an unbounded search.
  • Failed flight events can temporarily alter interior gravity.
  • Striking the interior with a hammer as a REJECT player can close and lock the doors, enable the alarm, disable Life Support and degrade matching keys after a configurable cooldown.

Loyalty and persistence

  • REJECT loyalty can continue to decrease passively instead of remaining static.
  • Returning after a configurable absence can apply jealousy penalties from other TARDISes according to their relative loyalty.
  • Moving a TARDIS home or overlapping another TARDIS home can apply configurable loyalty penalties.
  • REJECT players cannot establish or retain a spawn point inside the TARDIS.
  • Item entities retain their thrower information so rejected items cannot merge into unrelated stacks, and items thrown into the interior void by a REJECT player are discarded instead of being rescued.
  • Teleport epochs distinguish real teleports from ordinary player movement so approach tracking does not react to discontinuous position changes.

Timeline Erasure

A REJECT player who deliberately uses a Nether Star on the telepathic circuit can trigger configurable Timeline Erasure.

  • Their inventory is cleared.
  • Their loyalty is changed to REJECT across loaded and persisted TARDISes.
  • The current TARDIS closes its doors and enables the alarm.
  • Timeline Erasure uses its own damage type, particles and death message.

Why / Balance

REJECT becomes a meaningful relationship state rather than only a numeric loyalty threshold. The reactions are intended to feel like consequences from a living TARDIS while still respecting player control and server configuration.

Every major behavior has a configurable chance, distance, duration, cooldown or penalty. Trusted occupants and nearby PILOT-or-higher players suppress the most disruptive exterior and travel reactions. The handbrake remains an explicit way to prevent automatic evasive movement, and the configured home is treated as a protected area where the TARDIS does not flee.

Timeline Erasure is disabled independently and requires the specific combination of REJECT loyalty, a Nether Star and the telepathic circuit. It is therefore an opt-in severe consequence rather than an ordinary random reaction.

Technical details

  • Added a persistent TardisTemperamentHandler and TardisComponent.Id.TEMPERAMENT.
  • Added configurable temperament values under the tardis_temperament category.
  • Added bounded unsafe-position searches for temperament landings.
  • Added temporary gravity overrides with automatic restoration.
  • Added teleport-aware player state for reliable approach tracking across vanilla and Immersive Portals teleportation.
  • Immersive Portals checks only the exterior portal before entry and does not change the portal's global teleportability during door closing.
  • Added TimelineErasureUtil, the timeline_erasure damage type and its bypass tags.
  • Added generated English and Spanish text for every new configuration option, message and death message.
  • All former Rude TARDIS names were replaced in classes, methods, component IDs, configuration and translations.
  • No aliases or migrations are included for names or data which only existed in the unmerged original branch.
  • The changes have passed Spotless, datagen and the complete Gradle build.

Media

N/A

Requirements

Breaking changes

N/A

Changelog
🆑

  • feat: TARDISes can now use configurable temperament reactions against REJECT players, including access denial, evasive movement, temporary camouflage and travel consequences.
  • feat: REJECT players can now provoke subsystem, gravity, loyalty, key and spawn-point reactions from a TARDIS.
  • feat: Using a Nether Star on the telepathic circuit as a REJECT player can trigger configurable Timeline Erasure.
  • compat: Immersive Portals now blocks only rejected exterior entry while preserving outward travel during door closing.

@Peter1169
Peter1169 requested a review from a team as a code owner July 31, 2026 23:31
@github-actions github-actions Bot added S: Needs Review Status: Requires additional reviews before being fully accepted. A: Datagen Area: Datagen implementation & API. A: Tardis Components Area: Tardis components & manager. A: Console Area: Tardis console. S: Untriaged Status: Indicates an item has not been triaged and doesn't have appropriate labels. size/L Denotes a PR that changes 1000-4999 lines. labels Jul 31, 2026
@GSMPBot
GSMPBot requested a review from drtheodor July 31, 2026 23:31
@Peter1169 Peter1169 mentioned this pull request Jul 31, 2026
2 tasks
@github-actions github-actions Bot added the S: Merge Conflict Status: Needs to resolve merge conflicts before it can be accepted. label Aug 22, 2026
@github-actions

Copy link
Copy Markdown

This pull request has conflicts, please resolve those before we can evaluate the pull request.

@GSMPBot
GSMPBot requested a review from duzos August 27, 2026 17:31
@github-actions github-actions Bot removed the S: Merge Conflict Status: Needs to resolve merge conflicts before it can be accepted. label Aug 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A: Console Area: Tardis console. A: Datagen Area: Datagen implementation & API. A: Tardis Components Area: Tardis components & manager. S: Needs Review Status: Requires additional reviews before being fully accepted. S: Untriaged Status: Indicates an item has not been triaged and doesn't have appropriate labels. size/L Denotes a PR that changes 1000-4999 lines.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant