- 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
- Players will glance at Ancient Shrines near/behind them.
- Look back at these Shrines to activate your follower's horn!
- Currently, this even works if horns are turned off, as a sort of tutorial.
- TODO: A special horn will be able to activate them...
Previously, there was a permanent exception for Eggrobo (the default bot skin).
Now that exception is generalised for the specific skin the bot is being assigned, which we assume is intentful and correct.
In addition, the randomclass PR_BOTS now controls K_RetireBots as well, matching the other two random calls done for bot skins.
- `Condition1 = MakeRetire Eggrobo`
- Fires when:
- Not a cooperative context
- You've finished in good standing
- Another player has both
- PF_NOCONTEST
- The skin specified in the condition
Also makes rivalname-handling for K_InitGrandPrixBots `const char *`, since the author of this commit had to reference that code.
- Remove pointless "BUILDCONDITIONTITLE" macro for M_BuildConditionTitle
- Replace simple R_SkinUsable checks with M_GetConditionCharacter
- Supports knowing a character's name via them being the Rival for a currently unlocked character, if that Challenge doesn't require them unlocked to interact
- Stop sounds first, as before.
- Do most player updates before M_UpdateUnlockablesAndExtraEmblems is called
- Allows us to make Challenges dependent on end-of-round Standings
- Then Challenges and gamedata...
- Then, group all important game state updates together.
- THEN, finally assign PF_NOCONTEST when exitlevel occours.
- Prevents No Contest-based Challenges from firing cheesily
- Finally, Intermission-related material (also as before).
Some major cleanup to splitscreen HUD and spectator support; starting bumpers fix + ring sting indicator
Closes#692
See merge request KartKrew/Kart!1539
- Avoid iterating displayplayers to find view number and
prefer R_GetViewNumber.
- Iterate over all matching displayplayers if necessary,
instead of stopping at the first match.