Commit graph

24502 commits

Author SHA1 Message Date
toaster
fa2e54dd13 UCRP_FAULTED
- `Condition1 = Faulted Yes`
    - `FAULT during POSITION`
    - for example, combine with "& finish in 1st"
- `Condition1 = Faulted No`
    - `don't FAULT during POSITION`
2023-10-17 23:21:47 +01:00
toaster
90a65220b2 UCRP_FALLOFF, UCRP_TOUCHOFFROAD, UCRP_TOUCHSNEAKERPANEL, UCRP_RINGDEBT: Only evaluate the "false" case if the player is exiting or has PF_NOCONTEST 2023-10-17 23:20:16 +01:00
toaster
35ca8e6191 UCRP_SPEEDOMETER
Provide a percentage between 100 and 999 inclusive.
Reach that speed on the speedometer at any point during the race to achieve the condition.
2023-10-17 22:53:40 +01:00
toaster
9e1aec4298 UCRP_RETURNMARKTOSENDER
"when cursed with Eggmark, blow up the racer responsible"
Just a simple condition. Either it happens or it doesn't.
MT_SPBEXPLOSION now tracks whether it was made by KITEM_EGGMAN or KITEM_SPB, too!
2023-10-17 22:25:47 +01:00
toaster
54137ad468 Eggmark fixes
- Update eggmanblame on K_EggmanTransfer
    - Currently blames the bumper, but could blame the source's eggmanblame if we wanted to change that
- Use K_FlipFromObject for correct reverse gravity placement
2023-10-17 22:19:16 +01:00
toaster
3e494a342c UCRP_GACHABOMMISER
Break a target (Prison Egg/UFO) using exactly one Gachabom again and again
Becomes invalid if an Insta-Whip collides with a target, or you throw two at the same time
2023-10-17 21:09:22 +01:00
toaster
01b97cb829 Update UCRP_UFOATTACKMETHOD into UCRP_TARGETATTACKMETHOD
Supports Prison Eggs and Gachabom now as well.
For the original behaviour, combine with the new UCRP_SMASHUFO.
2023-10-17 21:03:20 +01:00
toaster
b91823540b UC_PRISONEGGCD: Don't use K_FlipFromObject, this was heinously incorrect 2023-10-17 20:57:19 +01:00
toaster
3836cfddcb UCRP_UFOATTACKMETHOD: Only check roundconditions the frame the UFO is destroyed, not hit 2023-10-17 12:49:50 +01:00
toaster
d11fe78e90 UCRP_UFOATTACKMETHOD
`Condition1 = UfoAttackMethod [type]`
    - "smash a UFO Catcher using only [type]"
        - Combine with `Prefix_SealedStar` or `Prefix_IsMap [special stage stage]`
        - Shows up as "???"
    - Types supported:
        - `Boost` - "boost power" (sneakers)
        - `Whip` - "Insta-Whip"
        - `Banana` - "Bananas"
        - `Orbinaut`- "Orbinauts"
        - `Jawz` - "Jawz"
        - `SPB` - "Self Propelled Bombs"
    - Other types could be added on request, these were just the easy ones

In addition, the prototype for P_MobjWasRemoved was moved to `p_mobj.h`.
It's EXTREMELY important that we're able to safely check mobj pointers anywhere a mobj_t is possible to observe, without including the full `p_local.h`...
2023-10-17 01:07:03 +01:00
toaster
f0d1813752 UCRP_TRACKHAZARD: Optimise implementation to not be 100 booleans
Much like player->availabilities, use a set of bits on UINT8.
2023-10-16 18:04:23 +01:00
toaster
d4e3d8433d UCRP_TRACKHAZARD
A series of 100 booleans on the roundconditions struct, one per possible lap.
Allows for a full suite of track hazard touching conditions - see the following examples.

- `Condition1 = Prefix_IsMap RR_MOTOBUGMOTORWAY
- `Condition1 = TrackHazard No`
- `Condition1 = IsMap RR_MOTOBUGMOTORWAY`
    - "MOTOBUG MOTORWAY: Don't touch any track hazard"
- `Condition1 = Prefix_GrandPrix`
- `Condition1 = IsMap RR_HARDBOILEDSTADIUM`
- `Condition1 = TrackHazard Yes`
- `Condition1 = And`
- `Condition1 = FinishPlace 1`
    - "GRAND PRIX: On HARD-BOILED STADIUM, touch a track hazard every lap & finish in 1st"
- `Condition1 = Prefix IsMap RR_DEATHEGG`
- `Condition1 = Trackhazard No 8`
    - "DEATH EGG ZONE: Don't touch any track hazard on lap 8"
- `Condition1 = Prefix_IsMap RR_SPEEDHIGHWAY
- `Condition1 = TrackHazard No Final`
    - "SPEED HIGHWAY: Don't touch any track hazard on the final lap"
2023-10-16 17:09:12 +01:00
toaster
3c5e03428a UCRP_HITMIDAIR: Fix typo for object type check 2023-10-16 15:48:08 +01:00
toaster
6b2e0a508d UCRP_RINGS, UCRP_RINGSEXACT
`Rings 10` - "with at least 10 Rings"
`RingsExact -14` - "with exactly -14 Rings"
(`Rings 20` will also be parsed as "with exactly -20 Rings")
2023-10-15 00:17:20 +01:00
toaster
b2aac22856 UCRP_FINISHPERFECT
Complete a perfect round (1st every lap) to get this
2023-10-14 23:21:51 +01:00
toaster
e4a3b85adf UC_UNLOCKPERCENT: Make SECRET_COLOR option actually count Spray Cans, not unlockables directly 2023-10-14 22:36:41 +01:00
toaster
70c0b0503d Ancient Shrine polish
- Change the phrasing from "activate the ancient shrine" to "play a melody for the ancient shrine in"
- Add ~~Morbius~~ Mystic Melody Orb decorations
- A_FireShrink has been fixed to use mapobjectscale (and prevent dividing by 0)
2023-10-14 21:25:03 +01:00
toaster
52674c7bb2 UC_UNLOCKPERCENT
- `UnlockPercent 40 AltMusic` - "Get 40% of alternate music"
- `UnlockPercent 1 Color` - "Get 1% of Spray Cans"
- `UnlockPercent 20 Map` - "Get 20% of Courses"
- `UnlockPercent 55 Cup` - "Get 55% of Cups"
- `UnlockPercent 100` - "Get 100% completion"
    - Provide a percentage and, optionally, an Unlockable type
    - This only works for Unlockable Types where there are expected to be more than one per board
2023-10-14 18:42:27 +01:00
toaster
f1e3c547b3 M_DrawStatistics: Rename maps page to "COURSES & MEDALS" per Oni's request 2023-10-14 18:32:28 +01:00
toaster
eeefb7beae Prison Egg CD drop: Visual polish
- Initial launch
    - Spin faster
    - Spawn closer to the center of the Prison Egg
- Pickup animation
    - Inspired by those star panels you had to use Flight Formation's Rocket Shoot into in Heroes
- Semibright under regular conditions
2023-10-13 18:35:07 +01:00
toaster
1c4750a0a2 readcondition: Support non-fragmented parameters that can be used for the Challenge Description directly
- "DescriptionOverride" (new!)
    - Provide a full description in place of the params and this will be used
    - Any conditions that are before it will not be wiped, so you can prefix it if you need to
    - Can be used with any other set of Conditions
        - `Condition1 = DescriptionOverride Complete the sentence: "ring racers (???)"`
- "Password"
    - Now supports passwords that contain spaces
        - `Condition1 = Password race as a ring!`
- "WetPlayer"
    - Now supports liquids that contain spaces
    - HOWEVER, it comes with the following caveats as part of the change:
        - The strictness level must be provided first.
        - You can't leave the strictness out. The previous default behaviour now requires STANDARD to be explicitly written.
        - `Condition1 = WetPlayer Standard Mega Mack` can be used, now.
2023-10-13 16:25:05 +01:00
toaster
7d5f0ea3ba M_DrawChallengeTile: Updates
- Add SECRET_ALTMUSIC tile associations
- Fix association for MISC
2023-10-12 21:15:57 +01:00
toaster
f8de2cfc83 UC_PRISONEGGCD
Gamedata minor version was updated again.
(God this was a weirdly big amount of work and it's not even polished.)
- Condition1 = PrisonEggCD [Level that has to be unlocked]
- Approximately every 30 Prison Eggs destroyed, you get a shot at a Prison Egg Drop.
    - The only Prison Egg Drop implemented right now is an Alt Music CD.
    - Your [Wild Prize] is guaranteed to be selected only from conditions associated with levels that are unlocked!
- Only spawns in Grand Prix Bonus Rounds, for netsync and game design.
- The number is fuzzed. If you start the level with 0 Prison Eggs to destroy, it selects a random number of Prisons in the level to bust.
- If you miss the pickup (such as into a deathpit), you'll get another shot in the immediate next Bonus Round you play.

Also:
- The number of Chao Keys you start your gamedata with is now part of the header file, not buried in the wiping function.
- Removed the ACTUAL last object definition vestiges of the Emerald Hunt gamemode.
2023-10-12 21:12:08 +01:00
toaster
71a95b3096 M_BuildConditionTitle: Support menuttl
Example for menuttl "Controls":
- For Tutorial levels, show "The Controls Tutorial"
- Otherwise, show "CONTROLS" (allcaps)
2023-10-11 17:24:50 +01:00
toaster
2cc796a042 M_AssignSprayCans: Don't handle the prepended cans in reverse order
Was messing around with part-duplicating this code for Prison Egg CDs, and realised a corruption/overwriting bug if you had more freebie Spray Cans than the standard ones.
2023-10-11 16:11:14 +01:00
toaster
46dcfe0000 Experiment for Challenges menu: The completion percentage only counts unlocks, but the Chao Medal meter fill subtracts major unlock skips
Should communicate the fact you're short of True Completion a little better.
2023-10-09 13:02:27 +01:00
toaster
bddb1d576d Challenges Menu: Fix copypaste error with Chao Medal fill drawer 2023-10-09 12:54:02 +01:00
toaster
3fe7a76c5e Merge branch 'master' of https://git.do.srb2.org/KartKrew/Kart into break-through-them-all 2023-10-09 12:28:52 +01:00
toaster
52706b4f6f S_SoundTestDefLocked: Actually restrict tracks that should be restricted
- POSITION!! music and the standard course track is always visible.
- Alt Music is hidden behind the relevant SECRET_ALTMUSIC.
- Associated music requires you to beat the level to listen.
2023-10-09 12:20:00 +01:00
Oni
c72a2cf94a Merge branch 'rideroid-hardcode' into 'master'
Lat Hardcode

See merge request KartKrew/Kart!1515
2023-10-08 21:22:18 +00:00
toaster
d784f6ad4a SECRET_ALTMUSIC
Restricts a map's alt music, in order of music definition.
Supports out-of-order discoveries!
2023-10-08 21:22:58 +01:00
toaster
8fd809f8b1 M_PrecacheLevelLocks(void): Implement a SECOND level of cacheing for Map and Cup unlocks
Determining whether a map or cup is unlocked or not is now linear-time.
- Attempted to cache SECRET_SKIN et al as well, but skins are loaded after unlocks... oh well.
- Was staring down the barrel of a triple-nested loop for implementing SECRET_ALTMUSIC, so did this first to set good precedent.
2023-10-08 18:25:20 +01:00
toaster
2368ee89e6 Merge branch 'master' of https://git.do.srb2.org/KartKrew/Kart into break-through-them-all 2023-10-08 13:20:21 +01:00
Oni
3e9c3526d3 Merge branch 'debug-death-pit' into 'master'
debugfinishline: highlight deathpits and instakill planes

See merge request KartKrew/Kart!1543
2023-10-08 07:49:39 +00:00
Oni
26f2a38451 Merge branch 'gitch-acs' into 'master'
ACS_Execute, ACS_ExecuteAlways: support map stringargs

See merge request KartKrew/Kart!1545
2023-10-08 07:49:24 +00:00
James R
91ce31c11d MT_SUNBEAMPALM_STEM: adjust radius for new sprite 2023-10-07 21:37:24 -07:00
James R
adb3eb7463 ACS_Execute, ACS_ExecuteAlways: handle map stringargs 2023-10-07 20:40:39 -07:00
toaster
756f42bc26 Fix DLZ Ring Sucker effect
- Fix infinite loop caused by not actually using the intended object type
- Fix integer multiply of two fixed-scale numbers causing overflow
2023-10-07 23:43:42 +01:00
toaster
dbcb39d7ed Fix Leaf Storm Eggball
- Map object num was incorrectly copypasted onto the Dead Line Ring Vaccuum as well
- Was getting destroyed instantly because its first spawnpoint is a deathpit. Now it only kills itself when it lands on a deathpit, not if it started on one
- Use destscale instead of scaling every frame
- Reduce duplicate P_IsObjectOnGround calls
- Now has its own state
2023-10-07 23:15:27 +01:00
toaster
b2bbde290b Add shadow to MT_KURAGEN
Hazard conveyance
2023-10-07 22:06:49 +01:00
toaster
8c734d3646 Merge branch 'master' of https://git.do.srb2.org/KartKrew/Kart into break-through-them-all 2023-10-07 12:42:07 +01:00
Lat
baa668895a Move transfer line dismount hack to linedef type 2005 2023-10-07 12:22:53 +02:00
Lat
dc6bb1bfa9 solve conflicts and update to master 2023-10-07 11:15:47 +02:00
Lat
bb3d666852 Whitespaces 2023-10-07 10:24:14 +02:00
Lat
085c3c650c Fix DLZ seasaws snapping to floors/ceilings 2023-10-07 10:21:18 +02:00
Lat
1e86d661a5 Change turbine fast speed criteria from 133 to 200% 2023-10-07 09:56:19 +02:00
toaster
ce3b6e304b Add UC_MAPMYSTICMELODY
If you activate an Ancient Shrine on that level, the condition triggers and the Challenge is achieved.
2023-10-06 22:32:43 +01:00
toaster
d386800c1e Ancient Shrine: Code the rest of the owl
- If a follower with the specific Mystic Melody sound effect (DSMELODY) is used on the Shrine by a local player...
- Activates the shrine after two seconds!
    - This is clientside only.
- Stores on the mapheaderinfo's mapvisited record
2023-10-06 22:24:40 +01:00
toaster
fe62e76a39 readfollower: Default horn to sfx_horn00 if an invalid enum is provided 2023-10-06 22:19:02 +01:00
toaster
6533e7e69f Consistancy(void): Use TypeIsNetSynced instead of MT_OVERLAY-specific check
In addition, don't use frame - I'm pretty sure this was something we've already violated to no ill effect.
2023-10-06 22:18:08 +01:00