Longer delay for using a Chao Key on a Major Challenge Tile

Also tidies up a lot of the code and constants related to the Key usage timing
This commit is contained in:
toaster 2023-09-27 20:54:32 +01:00
parent 3e901b312c
commit f29430f29c
3 changed files with 26 additions and 10 deletions

View file

@ -1214,9 +1214,11 @@ void M_DrawAddons(void);
#define TILEFLIP_MAX 16
#define CHAOHOLD_MAX (3*TICRATE/2)
#define CHAOHOLD_BEGIN 7
#define CHAOHOLD_END 3
#define CHAOHOLD_STANDARD (40) // (Close to 3*TICRATE/2 after padding, but adjusted to evenly divide by 10)
#define CHAOHOLD_MAJOR (60) //(3*CHAOHOLD_STANDARD/2)
#define CHAOHOLD_BEGIN (7)
#define CHAOHOLD_END (3)
#define CHAOHOLD_PADDING (CHAOHOLD_BEGIN + CHAOHOLD_END)
extern struct timeattackmenu_s {

View file

@ -6102,18 +6102,25 @@ challengedesc:
major = true;
tilex += challengesgridstep/2;
tiley += challengesgridstep/2;
baseradius *= 2;
baseradius = (7*baseradius)/4;
}
if (challengesmenu.chaokeyhold >= CHAOHOLD_MAX - CHAOHOLD_END)
const INT32 chaohold_duration =
CHAOHOLD_PADDING
+ (major
? CHAOHOLD_MAJOR
: CHAOHOLD_STANDARD
);
if (challengesmenu.chaokeyhold >= chaohold_duration - CHAOHOLD_END)
{
ending = true;
baseradius = ((CHAOHOLD_MAX - challengesmenu.chaokeyhold)*baseradius)*(FRACUNIT/CHAOHOLD_END);
baseradius = ((chaohold_duration - challengesmenu.chaokeyhold)*baseradius)*(FRACUNIT/CHAOHOLD_END);
}
INT16 specifickeyholdtime = challengesmenu.chaokeyhold;
for (i = 0; i < (major ? 10 : 1); i++, specifickeyholdtime -= 4)
for (i = 0; i < (major ? 10 : 1); i++, specifickeyholdtime -= (CHAOHOLD_STANDARD/10))
{
fixed_t radius = baseradius;
fixed_t thiskeyx, thiskeyy;
@ -6140,11 +6147,11 @@ challengedesc:
radius <<= FRACBITS;
keyholdrotation += 360 * ((challengesmenu.chaokeyhold - CHAOHOLD_BEGIN))
* (FRACUNIT/(CHAOHOLD_MAX - (CHAOHOLD_BEGIN + CHAOHOLD_END)));
* (FRACUNIT/(CHAOHOLD_STANDARD)); // intentionally not chaohold_duration
if (i == 0)
{
INT32 time = 3 - (keyholdrotation - 1) / (90 * FRACUNIT);
INT32 time = (major ? 5 : 3) - (keyholdrotation - 1) / (90 * FRACUNIT);
if (time <= 5 && time >= 0)
V_DrawScaledPatch(tilex + 2, tiley - 2, 0, kp_eggnum[time]);
}

View file

@ -382,7 +382,14 @@ void M_ChallengesTick(void)
{
challengesmenu.chaokeyhold++;
if (challengesmenu.chaokeyhold > CHAOHOLD_MAX)
const UINT32 chaohold_duration =
CHAOHOLD_PADDING
+ ((unlockables[challengesmenu.currentunlock].majorunlock == true)
? CHAOHOLD_MAJOR
: CHAOHOLD_STANDARD
);
if (challengesmenu.chaokeyhold > chaohold_duration)
{
#ifndef CHAOKEYDEBUG
gamedata->chaokeys -= (unlockables[challengesmenu.currentunlock].majorunlock == true)