Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature] FreezeTag mode as an option for Elimination #58

Open
NeonKnightOA opened this issue Jan 19, 2019 · 2 comments
Open

[Feature] FreezeTag mode as an option for Elimination #58

NeonKnightOA opened this issue Jan 19, 2019 · 2 comments
Labels
enhancement Things to spice up our game. help wanted I can't do this alone. I need help. In the form of a pull-request, preferably.

Comments

@NeonKnightOA
Copy link
Contributor

NeonKnightOA commented Jan 19, 2019

Related thread: http://openarena.ws/board/index.php?topic=5440.0

I have worked in the past on porting the Freezetag mod to OA code, though I've lost a bit of momentum and will due to the FT code itself not being GPL'd, and scrapped the whole thing.

Basics of FreezeTag (as a gamemode):

  • Round-based, team-based mode (so everything that can affect Elimination and/or CTF Elimination is fair game for FT)
  • Players get frozen instead of killed by weapon fire.
    • Level hazards (lava, slime, void... even water?) kill players as usual.
    • Frozen players are displayed with a shader covering the entirety of their body (leilei did a frozen shader some days ago).
    • In CTF Elimination, frozen players drop the flag.
  • Unlike dead players, frozen players can be thawed either on their own (1 HP/s) or with nearby teammates (5 HP/s).
    • A frozen player is thawed once they reach 100 HP/s.
    • Their arsenal is kept intact and they start from the player they were when frozen.
    • Alternatively, players slowly regenerate health (1 HP/s), but have a separate meter indicating the level of thawing (0%..100%). Nearby teammates thaw 5%, regular thawing is 1%. This is more complicated that the HP approach, though.
  • Scoring is the same as in Elimination/eCTF. Perhaps as a motivation, players willing to freeze teammates get score (1 point per second) based on the amount of time spent thawing teammates?

Proposed implementation in OA:

  • Due to OA already having a lot of gamemodes, it could be implemented instead as an option for Elimination and eCTF. (Using a cvar like elimination_freezetag) Therefore the main check should be G_IsARoundBasedGametype() && G_IsATeamBasedGametype.
  • Cvars elimination_ftThawTime and elimination_ftAlliedThawTime determining how much HP the frozen players restore on their own and with teammates.
  • HUD:
    • New center messages: has frozen you!, is thawing you, You have been thawed!.
    • New obituaryOutput messages: has been frozen, has been frozen, has been thawed**, has been thawed, .

In theory, this should require few lines of code. However, there's a lot

@NeonKnightOA NeonKnightOA changed the title [Feature] FreezeTag mode as an option for Elimination. [Feature] FreezeTag mode as an option for Elimination Jan 19, 2019
@The-Gig
Copy link
Contributor

The-Gig commented Jan 19, 2019

Just a small detail: for those cvar names, maybe "amount" (similar to g_obeliskRegenAmount) instead of "time"? In case they are expressed in hp/sec.

@NeonKnightOA NeonKnightOA added the enhancement Things to spice up our game. label Mar 14, 2024
@NeonKnightOA NeonKnightOA added the help wanted I can't do this alone. I need help. In the form of a pull-request, preferably. label Mar 29, 2024
@NeonKnightOA
Copy link
Contributor Author

FWIW I've opened a skeleton with some basic, yet unimplemented functions here.

It contains two cvars elimination_freezeTag (enables/disables the mode) and elimination_freezeTag_thawTime (amount of time required to thaw a frozen player). It also contains the helper functions CG_IsPlayerFrozen(*cent) and G_IsPlayerFrozen(*ent) that return true if the player is frozen, and the event flag EF_FROZEN. Plus, the mode is passed through elimFlags to cgame.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Things to spice up our game. help wanted I can't do this alone. I need help. In the form of a pull-request, preferably.
Projects
None yet
Development

No branches or pull requests

2 participants