diff --git a/src/k_roulette.c b/src/k_roulette.c index 70d00893e..107908fd7 100644 --- a/src/k_roulette.c +++ b/src/k_roulette.c @@ -192,7 +192,7 @@ static kartitems_t K_KartItemReelTimeAttack[] = static kartitems_t K_KartItemReelSPBAttack[] = { - KITEM_GACHABOM, + KITEM_DROPTARGET, KITEM_SUPERRING, KITEM_NONE }; @@ -1242,7 +1242,7 @@ static void K_CalculateRouletteSpeed(itemroulette_t *const roulette) return; } - if (K_TimeAttackRules() == true) + if (K_TimeAttackRules() == true && !(modeattacking & ATTACKING_SPB)) { // Time Attack rules; use a consistent speed. roulette->tics = roulette->speed = ROULETTE_SPEED_TIMEATTACK; diff --git a/src/objects/random-item.c b/src/objects/random-item.c index 8df3fb937..fcdbe6b4b 100644 --- a/src/objects/random-item.c +++ b/src/objects/random-item.c @@ -121,10 +121,14 @@ void Obj_RandomItemVisuals(mobj_t *mobj) // // Then extraval1 starts ticking up and triggers the transformation from Ringbox to Random Item. if (mobj->fuse == 0 && !(mobj->flags & MF_NOCLIPTHING) && !(mobj->flags2 & MF2_BOSSDEAD) && !cv_thunderdome.value - && (modeattacking == 0 || specialstageinfo.valid)) // Time Attacking in Special is a fucked-looking exception + && (modeattacking == ATTACKING_NONE || !!(modeattacking & ATTACKING_SPB) || specialstageinfo.valid)) // Time Attacking in Special is a fucked-looking exception { mobj->extravalue1++; + // Dumb, but in Attack starts (or POSITION from hell) you can reach early boxes before they transform. + if (leveltime == 0) + mobj->extravalue1 = RINGBOX_TIME; + // Don't transform stuff that isn't a Ring Box, idiot statenum_t boxstate = mobj->state - states; if (boxstate < S_RINGBOX1 || boxstate > S_RINGBOX12)