Skip to content

Conversation

@DESTROYGIRL
Copy link
Contributor

@DESTROYGIRL DESTROYGIRL commented Aug 15, 2025

Description

See "Last-Held-Stationary-Position Teleport" in the design doc

A brush entity that can prevent the ghost from becoming unplayable. When touched by a ghost or a player carrying the ghost, the ghost will be teleported back to where the player was last touching the ground.

For reviewers: Download this map
Spawn a bot, try getting the ghost into the pit. You cannot

neoAssets

Toolchain

  • Windows MSVC VS2022

Linked Issues

@DESTROYGIRL DESTROYGIRL requested a review from a team August 15, 2025 22:42
@DESTROYGIRL DESTROYGIRL added Enhancement New feature or request Changes in neoAssets This PR depends on changes in the neoAssets repository. The relevant PR should be in the description Mapping Entities, inputs and outputs. Things that are set up in the world editor labels Aug 15, 2025
@sunzenshen sunzenshen requested a review from a team August 16, 2025 05:45
@DESTROYGIRL DESTROYGIRL requested a review from sunzenshen August 16, 2025 11:02
@Rainyan Rainyan requested review from Rainyan and removed request for a team August 16, 2025 11:08
@DESTROYGIRL
Copy link
Contributor Author

Magical linux build fail that wasn't my fault?

@Rainyan
Copy link
Collaborator

Rainyan commented Aug 16, 2025

Magical linux build fail that wasn't my fault?

Looks like the CI machine internet just ate dust for whatever reason. Probably not code related 😄

@Rainyan
Copy link
Collaborator

Rainyan commented Aug 16, 2025

Also, this is a complete nit, but could we rename this thing "boundry" -> "boundary"? Because I think it's a typo(?)

@DESTROYGIRL
Copy link
Contributor Author

Also, this is a complete nit, but could we rename this thing "boundry" -> "boundary"? Because I think it's a typo(?)

Please don't embarass me like that

@Rainyan
Copy link
Collaborator

Rainyan commented Aug 16, 2025

Also, this is a complete nit, but could we rename this thing "boundry" -> "boundary"? Because I think it's a typo(?)

Please don't embarass me like that

Well, it wasn't me who even noticed it but my computer with its red squiggly underlines. Who even knows how English works, it is the hardest programming language of them all

- changed all instances of boundry to boundary
- made CheckForWeapon() private and instead calls the baseclass think in the ghost boundary think
@DESTROYGIRL DESTROYGIRL requested a review from Rainyan August 16, 2025 12:39
@DESTROYGIRL
Copy link
Contributor Author

I've changed the test map to match the classname change so you'll need to download it again if testing with it

@DESTROYGIRL DESTROYGIRL changed the title Ghost Boundry Ghost Boundary Aug 16, 2025
Copy link
Collaborator

@Rainyan Rainyan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

One thing I noticed is that there's a slight difference in ghost teleport location depending on how it goes OOB:

  • If carried by a ghoster, it seems to:
    • Teleport to last valid standing pos
    • Have physics disabled
  • If shot OOB:
    • Teleports back to the ghost spawn
    • Does not have physics disabled

It would be nice if there's a way to simplify this down to one set of OOB behaviours, so it's more predictable to the player. But maybe this is something to iterate on for some future PR.

(This also somewhat becomes a design-doc thing, so not really relevant to fine-tuning as part of an implementation PR probably.)

@DESTROYGIRL
Copy link
Contributor Author

DESTROYGIRL commented Aug 16, 2025

It would be nice if there's a way to simplify this down to one set of OOB behaviours, so it's more predictable to the player. But maybe this is something to iterate on for some future PR.

I considered this to be a very rare scenario where this would happen, because it would mean players could manipulate the ghost off an edge from where it spawned without ever holding it. I don't think any maps have ghost spawns this close to an edge, maybe saitama(?), because when a ghost spawns it isn't physics disabled, so I thought the behaviour should be the same. Otherwise the ghost would probably be floating in mid air, or wherever the mapper placed the ghost spawn

@Rainyan
Copy link
Collaborator

Rainyan commented Aug 16, 2025

I considered this to be a very rare scenario where this would happen, because it would mean players could manipulate the ghost off an edge from where it spawned without ever holding it. I don't think any maps have ghost spawns this close to an edge, maybe saitama(?), because when a ghost spawns it isn't physics disabled, so I thought the behaviour should be the same. Otherwise the ghost would probably be floating in mid air, or wherever the mapper placed the ghost spawn

Good points. Mostly thinking in terms of generalising the behaviour, not just for vanilla maps, but for any hypothetical map X with whatever geometry they might come up with. There's also things like a grenade hitting the ghost to make it fly into some pit. And it's also noteworthy that ghost won't only remain at spawnpoints, but it can be dropped at any point in the map either intentionally or by the carrier dying.

@DESTROYGIRL
Copy link
Contributor Author

There's also things like a grenade hitting the ghost to make it fly into some pit. And it's also noteworthy that ghost won't only remain at spawnpoints, but it can be dropped at any point in the map either intentionally or by the carrier dying.

Not sure I'm following your logic, but if the carrier dies and it falls into a pit, it's just going to teleport back to where the carrier was before they died
The difference here shouldn't be noticeable during regular gameplay, as it will only ever happen if the ghost was pitted before ever being picked up, which means none of the players have actually taken intrest in using it yet. In this scenario, it's as if the ghost had never been knocked into the pit in the first place. If we disable physics on it, players are more likley to notice that

I guess there is the discrepency of how the ghost might land on the ground when recalled back to the spawn VS how it landed originally at the start of the round but that sounds like the mapper placed the spawn too high if it's causing an issue
And if the ghost is spawning and falling into a pit on it's own, I consider that a map issue too

@Rainyan
Copy link
Collaborator

Rainyan commented Aug 16, 2025

I meant this in reference to:

I don't think any maps have ghost spawns this close to an edge, maybe saitama(?)

since even if there's no mapper-designed ghostspawns close to a cliff, player actions could result in a situation like that nonetheless. Since players are free to toss the ghost anywhere, and ghosters could die with the ghost anywhere.

Regardless, this is likely off-topic for this specific PR, so I'll leave it at that. Since this should probably go to Discord, or design-docs. I'm happy to merge what we've got here.

Copy link
Contributor

@sunzenshen sunzenshen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updates LGTM. Downloaded the test map and checked that the behavior seems reasonable.

@DESTROYGIRL DESTROYGIRL merged commit a5b4b03 into NeotokyoRebuild:master Aug 16, 2025
7 checks passed
@DESTROYGIRL DESTROYGIRL deleted the ghost_boundry branch August 16, 2025 22:13
@DESTROYGIRL DESTROYGIRL added the CTG Related to the Capture The Ghost gamemode. label Dec 9, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Changes in neoAssets This PR depends on changes in the neoAssets repository. The relevant PR should be in the description CTG Related to the Capture The Ghost gamemode. Enhancement New feature or request Mapping Entities, inputs and outputs. Things that are set up in the world editor

Projects

None yet

Development

Successfully merging this pull request may close these issues.

There should be a smarter way of blocking the ghost

3 participants