Commit graph

192 commits

Author SHA1 Message Date
toaster
c7cc730c35 Obj_AudienceInit: Improve color handling
- Catch all invalid colors with default randomisation
- Catch invalid colors more thoroughly
- Report typos to the user
2023-04-21 21:06:21 +01:00
toaster
2f8b8cf532 Follower lists: Fix typing
Should consistently be signed INT16, not unsigned UINT16
2023-04-21 20:52:13 +01:00
toaster
98288fd289 Obj_AudienceInit: Incorporate follower scale into multipliciation 2023-04-21 20:20:51 +01:00
toaster
a4a5752df0 Obj_AudienceThink: Ease the angle change 2023-04-21 18:24:51 +01:00
toaster
91f4169212 Follower-mimicing emblems: Permit them to just sit there if their defined bobamp is 0
This is unlike audience members, which have a minimum jump height
2023-04-21 17:42:44 +01:00
toaster
945a00df6e Permit emblem pickups that take on the visage of a Follower
- If Global-type map emblem has GE_FOLLOWER, attempt to take on the appearance of the follower specified by var2.
    - Unlike MT_RANDOMAUDIENCE, this picks whether the object should be floating or hopping based on the specified mode of the source Follower.
    - Always chooses to face the nearest player.
- Rearrange some properties affected by Obj_Audience/audience.c to not conflict with MT_EMBLEM
2023-04-21 15:17:43 +01:00
toaster
1e5fadc901 Audience-related functions: Rename + adjust
- Since they're not necessarily going to be randomised, make the prefix Obj_Audience instead of Obj_RandomAudience.
- Externalise some properties that we may not want affecting all hypothetical uses.
    - Flag auto-application should be done externally, since this won't be general.
    - Focusing on player should be controlled by the function call, not an ambiguous flag.
2023-04-21 15:09:07 +01:00
toaster
178fe3052d Obj_RandomAudienceInit: Increase the scale to 3x instead of 2x 2023-04-20 23:22:03 +01:00
toaster
a74b7995c9 Implement Follower Audience object
- Replaces Chao audience entirely
    - Convenient, because one of the two default follower types used in the audience is Chao
- Can provide one follower, or a list of followers, on the stringarg1 (seperated by spaces/commas) and it'll pick randomly between them
    - If not provided, uses the mapheader follower list
- Can provide one skincolor, or a list of skincolors, on the stringarg2 (seperated by spaces/commas) and it'll pick randomly between them
    - If not provided, uses the follower's default color
    - If the follower's default color is Match/Opposite or the user provides "Random" in stringarg2, pick a random skincolor
- If arg3 is set, floats in the air
    - MTF_OBJECTSPECIAL in binary format
- If arg4 is set, faces the closest player
    - MTF_AMBUSH in binary format
    - Uses some funny mathematical tricks to avoid checking on the same frame as every other audience member at once
2023-04-20 23:15:56 +01:00
toaster
03ef0b4e75 No Ring Shooters before the start of the level in general, not just in Race/GTR_CIRCUIT 2023-04-17 00:23:14 -04:00
toaster
e7896a7118 Obj_RingShooterInput: Fix several issues with the to-spot teleport
- Fix undesired fastfall bounce
- Fix reverse gravity
2023-04-17 00:23:13 -04:00
Sally Coolatta
5917861d17 Ring Shooter: Ignore multiple uses from 1 player 2023-04-17 00:23:13 -04:00
Sally Coolatta
1c4137648b Ring Shooter: Fix sometimes invisible after use 2023-04-17 00:23:13 -04:00
toaster
c4a087790a Obj_UpdateRingShooterFace: Set threshold overlay flags (fixes scaling/alignment of face) 2023-04-17 00:23:12 -04:00
Sally Coolatta
3b7ac38d9f Ring Shooter: E-Brake + adjust distance
- Y is now additionally another macro for HOLD!
- Disable HOLD! drop from respawning when done with Ring Shooter.
- Immediate release Ring Shooter now goes back a waypoint, and does not have a minimum distance to go forward anymore.
2023-04-17 00:23:11 -04:00
Sally Coolatta
b123fd98a2 Ring Shooter: Disallow turning while in it 2023-04-17 00:23:11 -04:00
Sally Coolatta
3ea9b2d82d Ring Shooter: Force player mom to 0 2023-04-17 00:23:10 -04:00
Sally Coolatta
14d371f00f Basic Ring Shooter freeze implementation
It's probably too easy to break, but this should be enough for testing at least.
2023-04-17 00:23:10 -04:00
Sally Coolatta
92b8e38f11 Actual Ring Shooter functionality 2023-04-17 00:23:09 -04:00
Sally Coolatta
4e7b6f0cc3 Add ring shooter tire grabbers + more player logic 2023-04-17 00:23:08 -04:00
Sally Coolatta
d28601fd52 Use less confusing defines for ring shooter 2023-04-17 00:23:08 -04:00
Sally Coolatta
319cee4afa Move ring shooter to its own file 2023-04-17 00:23:07 -04:00
toaster
b9133530e2 Obj_OrbinautJawzCollide: Guard for removed objects 2023-04-11 17:39:53 +01:00
Oni
485af970e6 Merge branch 'sealed-smooth' into 'master'
Sealed Smooth

See merge request KartKrew/Kart!1154
2023-04-09 03:07:26 +00:00
toaster
307d78130f UFO Catcher: Adjust sprite z offset of prize inside glass orb 2023-04-07 23:36:46 +01:00
toaster
2969aabae4 UFO Catcher: Adjust for changed glass graphic 2023-04-07 23:36:30 +01:00
toaster
6108aa3dd6 Spawn shards on UFO Catcher glass damage
Involves some code adapted from monitor.c ... I couldn't just expose it via k_object.h because the clean entrypoint was JUST too specific to Monitors
2023-04-07 22:36:32 +01:00
toaster
03049db837 UFO Catchet glass ball
Preliminary offset, no effects, but closer to complete visually.
2023-04-07 21:01:51 +01:00
toaster
8a3d225790 UFO Catcher can now carry Emeralds other than the Green Chaos Emerald
- Uses P_GetNextEmerald to determine the associated emerald. Earlier work paying dividends!
- Color selected matching Cup Select screen
- New states which can be used in other contexts
    - S_SUPEREMERALD1 and S_SUPEREMERALD2
    - S_SUPEREMERALD_UNDER
2023-04-07 19:32:46 +01:00
toaster
7abb2ce162 K_drawKartMinimap: Add progression meter variation
- Uses a lot of existing apparatus, just leveraged to draw horizontally instead of a full map.
- Currently only functional in Sealed Star contexts, due to K_GetCircuitLength having no clean alternative for sprint tracks.
    - Tracks Catcher/Emerald.
- K_drawKartProgressionMinimapIcon and K_getKartProgressionMinimapDistance
    - Abstracts the progress of converting distance to finish into a position on the bar.
    - Sibling function of K_drawKartMinimapIcon
        - The author of this commit wanted to make it an alternate outcome of this function, which it shares a lot of similarity with, but doing waypoint traversal in HUD for objects that don't independently track their distance would absolutely tank performance.
        - Tidying up in the main function permitted less minimap state to be used in these.
2023-04-07 18:01:50 +01:00
toaster
4b90a8d8bf Hyudoro: Fix an exploit where a player in first can touch their hyudotro while in first on a weirdly shaped map. 2023-04-06 21:17:01 +01:00
toaster
a6ecb25ed5 hyudoro_set_held_item_from_player
- Handles putting an object into the hyuu's inventory.
- Permits Sink conversion for items which are a little too powerful to give to someone who was JUST in first place.
    - For now, the item to convert is an SPB.
2023-04-06 21:04:38 +01:00
James R
71626dbc76 K_GetBestWaypointForMobj: add a hint argument
The hint argument is a known nearby waypoint that can be
used to optimize the waypoint search.
2023-03-31 01:41:31 -07:00
Sally Coolatta
e7128baef0 Add UFO script type 2023-03-28 18:07:22 -04:00
Gunla
45903adf28 Merge branch 'heighted-ufo' into 'master'
Obj_PlayerUFOCollide: Apply height checks even when boosting

See merge request KartKrew/Kart!1086
2023-03-25 00:51:15 +00:00
Gunla
954409fa2f Merge branch 'unnerf-missiles' into 'master'
Add player speed to thrown items, no mention of top speed

Closes #434

See merge request KartKrew/Kart!1050
2023-03-25 00:50:53 +00:00
toaster
3fbede8eb2 Obj_PlayerUFOCollide: Apply height checks even when boosting 2023-03-23 21:26:55 +00:00
Chromatian Keiske
ada076a5cb Merge branch 'fix-non-player-chasing-spb' into 'master'
Fix SPB chase crashing if not chasing a player

Closes #484

See merge request KartKrew/Kart!1079
2023-03-23 08:31:19 +00:00
Gunla
6196af65e5 Merge branch 'shield-loser' into 'master'
Shield Loser

Closes #490

See merge request KartKrew/Kart!1074
2023-03-23 00:58:22 +00:00
James R
7cd6f54882 Fix SPB chase crashing if not chasing a player 2023-03-22 15:04:43 -07:00
toaster
01dbbc34d1 K_PopPlayerShield
- Split out from K_DropHnextList to make its handling more explicit, and to permit K_DropItems scenarioes to *not* drop shields.
- Always called on P_DamageMobj on any non DMG_STUMBLE damagetype, so shields always get digested on true pain.
    - Todo: Should shields be popped even on DMG_STING..?
- NOT called on Eggman Mark pickup.
- Add to Lua (alongside K_DropHnextList, which was inexplicably missing).
2023-03-21 13:48:30 +00:00
James R
f93aa07dd7 Halve Garden Top speed
This is probably more correct because it would thrust 2x
speed in a straight line before.
2023-03-21 00:30:52 -07:00
James R
dc024b874b Morph Drop Target from forward thrown white to lime
Blends from white into lime over 27 tics.
2023-03-19 03:52:25 -07:00
James R
34e6ef5496 Merge branch 'special-stage-acs' into 'master'
ACS extensions for Special Stages

See merge request KartKrew/Kart!1036
2023-03-18 11:06:50 +00:00
toaster
3d786646bf Merge branch 'fix-sneaker-ufo' into 'master'
Reset stacked sneaker counter when hitting UFO

See merge request KartKrew/Kart!1043
2023-03-16 12:14:21 +00:00
toaster
5c4044a943 Merge branch 'ufo-stumble' into 'master'
Non-damaging UFO-player collision

See merge request KartKrew/Kart!1042
2023-03-16 12:14:04 +00:00
Sally Coolatta
c8ccb13614 Add additional script types
- POSITION: Runs when POSITION period ends. Has no activator.
- OVERTIME: Runs when the time limit runs out. Has no activator.
- EMERALD: Runs when the Special Stage UFO's Chaos Emerald is grabbed. The activator object is set to the player that grabbed it.
2023-03-14 08:02:57 -04:00
James R
9652b5a860 Reset stacked sneaker counter when hitting UFO 2023-03-13 00:28:50 -07:00
James R
b405e88ec3 Non-damaging UFO-player collision
- UFO is always solid.
- Adds a height check if the player is no boosting.
- Stumbles if the player is within a 60 degree cone of the
  direction the UFO is moving. (Only applies if not
  boosting.)
2023-03-12 23:42:14 -07:00
James R
e5e23e788a Remove hitlag threshold condition from items
This condition blocked items from doing damage after just
being thrown. The intention was to not let shotgun Ballhog
instakill the player. This is now prevented by
MF2_ALREADYHIT instead.

blame cab1af549
2023-03-11 05:39:07 -08:00