Commit graph

123 commits

Author SHA1 Message Date
James R.
bcd4963f2e Always set starting bumpers in P_SpawnPlayer 2023-10-03 21:28:33 -07:00
James R
71f9b79e71 Prisons: fix exit conditions around spectating
Fixes player death not ending a Prisons round, bugged
debug feature.

Now, do it properly. Don't end the round if the last
player spectates.

This is more than a debug feature; in Free Play, it lets
the player spectate and fly around if they want to, and
even come back in, all without restarting the level.
2023-08-26 12:35:16 +01:00
Sally Coolatta
f02e6dbe3c Final thing args code cleanup
- Fix the last few bugs I could find with thing args
- Move version update code
- Rename internal variables to `thing_[string]args` to make older code merge issues more obvious
2023-08-22 02:14:09 -04:00
Oni
07aabdfdb3 Merge branch 'battle-emerald-collect' into 'master'
Emerald collection polish, animation for Battle and tweak to Sealed Star

See merge request KartKrew/Kart!1408
2023-08-20 06:10:35 +00:00
James R
01e2a26689 DEVELOP: let us spectate or pause the game at all times
TODO: This should be available as a debugging option at
release, since it would be useful for addon authors.
I don't want to make more cvars, those are getting
cluttered and should maybe be coalesced into a single
debugging option.
2023-08-19 05:01:40 -07:00
James R
5cc4b1ebad K_DropEmeraldsFromPlayer: fix after emerald orbiting changes
I don't see what it was using the target for before so I'm
just removing that.
2023-08-19 04:03:32 -07:00
James R
1c2a2155c0 Deduplicate a bunch of emerald related code
- Add K_BattleOvertimeKiller
  - Kills an object if it is outside of the Overtime
    Barrier in Battle

- Add Obj_SpawnEmeraldSparks
  - Use this function for MT_EMERALD, MT_MONITOR and
    MT_SPECIAL_UFO

- Move thinking code for MT_EMERALD and MT_MONITOR to
  objects/monitor.c and objects/emerald.c
2023-08-12 19:34:26 -07:00
Oni
afc474461f Merge branch 'battle-recommendations' into 'master'
Battle Recommendations

Closes #569

See merge request KartKrew/Kart!1318
2023-07-01 20:19:18 +00:00
James R
eb41362195 K_RunPaperItemSpawners: always give monitors 3 item types 2023-06-30 19:58:02 -07:00
James R
313d2f8fd2 During Overtime: point Servant Hand to Battle Kiosk, stop pointing to UFOs 2023-06-30 19:58:02 -07:00
James R
506e0c58c8 Always shrink Overtime Barrier in 30 seconds 2023-06-30 19:58:02 -07:00
James R
8ef03f29e5 K_SpawnOvertimeLaser: only move laser height with player if player goes above the top of the lasers 2023-06-30 19:58:02 -07:00
James R
d4a0cdd3c0 Sphere Box: use extravalue2 for sphere count
extravalue1 is already used by timer
2023-06-30 17:07:25 -07:00
Oni
da2e745bf7 Merge branch 'splitscreen-timer' into 'master'
Splitscreen level timer HUD

See merge request KartKrew/Kart!1309
2023-06-30 06:08:52 +00:00
James R
d8afc7597d Add K_FlingPaperItem, split off random thrust functionality
Battle UFO drops do not fling.
2023-06-29 22:22:00 -07:00
James R
5546f7e7a7 Battle: spawn sphere boxes even less frequently, 2x -> 16x 2023-06-29 21:01:05 -07:00
James R
9f3bee528a Battle: spawn 3 monitors at most 2023-06-29 21:01:03 -07:00
James R
f5d68783fc Battle UFO spawning behavior
- MT_BATTLEUFO_SPAWNER args[0] is the ID
- Spawn a random UFO from the list spawner at the start of
  Battle
- UFO spawns 200 units above the spawner
- After destroyig a UFO, wait 25 seconds before spawning
  the next UFO (next ID in the list)
2023-06-29 19:49:35 -07:00
James R
2ce05f018e Add g_battleufo global, add to netsave 2023-06-29 19:49:18 -07:00
AJ Martinez
20f57d7efa Don't drop emeralds unless it's a new hit 2023-05-25 22:49:14 -07:00
AJ Martinez
cac02bb01a Emerald fixups 2023-05-19 22:51:06 -07:00
toaster
12ecb1f7a4 P_DoPlayerExit changes
- Add flag application in function signature
    - Consistent gating of extra PF_NOCONTEST application behind not already exiting
        - This should fix dying after winning in K_Cooperative gametypes breaking things
- P_DoAllPlayersExit
    - Consistent condition of playeringame, spectator, exiting, etc checks
    - Also could force-give a life (for Battle Prisons)
2023-05-02 18:16:26 +01:00
James R
06f58486a5 Merge branch 'emerald-timer' into 'master'
Add fuse to Emeralds in Battle

Closes #126

See merge request KartKrew/Kart!1091
2023-03-27 12:12:17 +00:00
James R
28c9c3cc7d Tie Battle fuse for item drops and Emeralds to GTR_CLOSERPLAYERS instead of GTR_BUMPERS 2023-03-26 07:01:19 -07:00
James R
04bc0b6b9d Add fuse to Emeralds in Battle, same as dropped items 2023-03-23 19:39:28 -07:00
James R
5cce791c80 Add battletest cvar, force Battle mode instead of Prisons in FREE PLAY 2023-03-23 19:31:23 -07:00
toaster
4c0077e07c Merge branch 'master' of https://git.do.srb2.org/KartKrew/Kart into conditions-cascading 2023-03-19 13:01:06 +00:00
toaster
81e880464a CD Special Stage UFO changes
- MT_CDUFO is now a valid type of Prison in Prison Break
    - Tracked on counter
    - Tracked on HUD
    - Tracked on minimap
- P_AddBrokenPrison in p_inter.c
    - Generalises behaviour on breaking a Prison Break object
- MT_CDUFO polish
    - Can now be broken with all damaging objects EXCEPT Shield Orbinaut/Shield Jawz
        - These two are exceptions to prevent them from denying you your on-contact item grab., which these will still give you if you touch them
    - Breaking the object by touching it now causes hitlag instead of fireworks
        - The fireworks were to make touching it feel good... but hitlag feels better :P
    - Now supports mapobjectscale directly.
    - Scaled 1.5x mapobjectscale
    - Hitbox now far closer to actual sprite (which was just replaced, but was inexplicably far away from the old one too)
2023-03-18 00:22:44 +00:00
toaster
2e1efaff0c Merge branch 'master' of https://git.do.srb2.org/KartKrew/Kart into conditions-cascading
# Conflicts:
#	src/k_battle.c
#	src/k_hud_track.cpp
#	src/k_kart.c
#	src/p_inter.c
2023-03-14 21:59:19 +00:00
toaster
241475155b Rename "Break the Capsules" to "Prison Break"
We had this collective consciousness bigbrain moment in VC together, and it can literally only happen in this branch because unlocks.pk3 is the only main-game asset that needs to change for it
Solves the big problem we had with mixing up Item Capsules and ~~Battle Capsules~~ PRISON EGGS
2023-03-12 20:17:46 +00:00
James R
5cebe7ab35 Battle: count emeralds inside of monitors during Overtime too
Don't spawn extra emeralds during Overtime since some
monitors could survive.
2023-03-08 19:01:03 -08:00
James R
8ce90d7737 Battle: fix emerald win condition
- winning player ALSO exits
- winner gets 100 points
2023-03-08 19:01:02 -08:00
James R
85a101cbd7 Replace battlecapsules || bossinfo.valid checks with K_Cooperative 2023-03-08 19:01:02 -08:00
James R
f69d70043c Keep player alive at zero bumpers
Player have one more hit point than number of bumpers.
Break the Capsules gives zero bumpers.
2023-03-08 19:01:02 -08:00
James R
a3c64068e6 Replace bumpers completely with health
Adds some functions:

- K_Bumpers, bumper count for the count, intended for
  where player->bumpers was used in HUD and visual
  contexts.
- K_BumpersToHealth, converts bumper count to health
  points.

player->mo->health replaces player->bumpers where it was
used in health contexts.

Removes some functions:

- K_HandleBumperChanges
- K_DestroyBumpers

Everything K_HandleBumperChanges did has either been
removed or moved elsewhere. P_KillMobj also already called
K_CheckBumpers.

K_DestroyBumpers became pointless after player->bumpers
was removed.
2023-03-07 22:54:33 -08:00
James R
aa927a5b00 Merge branch 'overtime-spectator' 2023-03-07 01:45:16 -08:00
James R
540bd6e18d Merge branch 'improve-battle-tracking' into 'master'
HUD TARGET for Battle Kiosk, Monitors and Emeralds; remove WANTED over players' heads

See merge request KartKrew/Kart!1016
2023-03-07 09:44:07 +00:00
Oni
cdc56ab2cc Merge branch 'podium' into 'master'
Podium

See merge request KartKrew/Kart!1014
2023-03-07 05:58:20 +00:00
James R
d56be63249 Battle: eliminate players killed by the Overtime Barrier
- Players killed this way become invisible and unable to
  move.
- Ends the match when one player is remaining.
2023-03-06 18:52:59 -08:00
James R
18ccc3db27 Remove g_hiscore since it's not used anymore 2023-03-06 18:52:53 -08:00
Sally Coolatta
57f53a5531 Search bonus maps to calculate total capsules
No more moving goalpost! This means we can put it on the intermission screen and not just the final rankings screen.
2023-03-06 18:26:07 -05:00
Sally Coolatta
c61e017c38 GP rank cleanup
- Move ranking to its own file.
- gpRank (the variable) -> g_gpRank
- gpRank (the struct) -> gpRank_t
- Functions that worked on the global directly now take a pointer to a struct
- Fixed total ring increment
- Fixed final lap's lapPoints being discarded
- Capsules are now added when exiting with the rest of the stuff
2023-03-06 18:25:14 -05:00
Sally Coolatta
55de982fa3 GP ranking
Needs balancing + intermission, but mostly functional
2023-03-06 18:25:14 -05:00
James R
5cb54f29fe Sync player mobj health to bumper count
Fixes players killed twice if P_DamageMobj is called with
DMG_TIMEOVER and gametyperules GTR_BUMPERS.

Moves death condition out of K_HandleBumperChanges and
lets losing last bumper organically kill the player by
decreasing their health.
2023-03-02 22:05:30 -08:00
James R
01227814b9 Refactor Battle points cap to use g_pointlimit
Fixes players leaving mid-game lowering the point limit
and instantly ending the match.

see 94c811b55
2023-02-24 23:21:47 -08:00
James R
e6da831e36 HUD target player with most points
- Replace battlewanted global with g_hiscore, keeps track
  of the current highest number of points.
- Adds HUD tracking for player(s) with the hiscore.
- Should target both players in a tie.
2023-02-24 23:21:47 -08:00
James R
87a6743c0f Battle: replace bumper elimination win condition with points cap
- Points cap is 3 * player count. E.g. for 3 players, the
  cap is 9 points.
- Once a player gets enough points, they win!
2023-02-24 23:21:47 -08:00
toaster
1b2be7b6c9 K_CheckBumpers, K_HandleBumperChanges: Make 2P behaviour in battle capsules mode function
- Only exit Capsules/Versus round if number of players with no bumpers is equal to number of players in game.
- Apply Eliminated flags in relevant context, to prevent griefing.
2023-02-16 16:35:52 +00:00
James R
7ce12f37dc Spawn Battle monitors
- Item count has always scaled up with player count. Items
spawn every N tics. Previously, these items were evenly
distributed across all item spots. Now, only one monitor
is spawned at a time and the number of items inside scales
up.

- Emeralds spawn inside of monitors instead of loosely.
- Sphere boxes should spawn in the same way as before.

- Once a monitor has been spawned at an item spot, no more
monitors can be spawned there until that one is destroyed.
There's an additional delay of one spawn interval before
a monitor can be spawned in that location again. This is
so a monitor cannot ever instantly spawn back if one is
destroyed at just the right time.
2023-01-03 05:31:30 -08:00
Oni
46005089f1 Merge branch 'rulesify' into 'master'
Rulesify (resolves #375)

Closes #360 and #375

See merge request KartKrew/Kart!836
2023-01-03 02:43:52 +00:00