Some more vague rough porting.

This commit is contained in:
ZTsukei 2016-04-10 17:04:33 -04:00
parent b9db247d55
commit 9ee817c860
4 changed files with 122 additions and 18 deletions

View file

@ -1813,10 +1813,19 @@ void T_ThwompSector(levelspecthink_t *thwomp)
sector_t *actionsector; sector_t *actionsector;
INT32 secnum; INT32 secnum;
// Put up a timer before you start falling down.
// I could of used rowoffset, but the FOF actually
// modifies the textures's Y offset. It doesn't with
// textureoffset, so Effect 4 can be ignored as usual. // SRB2kart 16/04/10
if (thwomp->sourceline->flags & ML_EFFECT1
&& leveltime < (unsigned)(sides[thwomp->sourceline->sidenum[0]].textureoffset>>FRACBITS))
thwomp->direction = 0;
// If you just crashed down, wait a second before coming back up. // If you just crashed down, wait a second before coming back up.
if (--thwomp->distance > 0) if (--thwomp->distance > 0)
{ {
sides[thwomp->sourceline->sidenum[0]].midtexture = sides[thwomp->sourceline->sidenum[0]].bottomtexture; // SRB2kart 16/04/10
sides[thwomp->sourceline->sidenum[0]].midtexture = sides[thwomp->sourceline->sidenum[0]].toptexture;
return; return;
} }
@ -1931,6 +1940,9 @@ void T_ThwompSector(levelspecthink_t *thwomp)
thinker_t *th; thinker_t *th;
mobj_t *mo; mobj_t *mo;
thwomp->direction = -1; // SRB2kart 16/04/10
/*
// scan the thinkers to find players! // scan the thinkers to find players!
for (th = thinkercap.next; th != &thinkercap; th = th->next) for (th = thinkercap.next; th != &thinkercap; th = th->next)
{ {
@ -1945,6 +1957,7 @@ void T_ThwompSector(levelspecthink_t *thwomp)
break; break;
} }
} }
*/
thwomp->sector->ceilspeed = 0; thwomp->sector->ceilspeed = 0;
thwomp->sector->floorspeed = 0; thwomp->sector->floorspeed = 0;
@ -2841,7 +2854,7 @@ INT32 EV_DoElevator(line_t *line, elevator_e elevtype, boolean customspeed)
return rtn; return rtn;
} }
void EV_CrumbleChain(sector_t *sec, ffloor_t *rover) void EV_CrumbleChain(sector_t *sec, ffloor_t *rover, INT32 sound)
{ {
size_t i; size_t i;
size_t leftmostvertex = 0, rightmostvertex = 0; size_t leftmostvertex = 0, rightmostvertex = 0;
@ -2859,6 +2872,8 @@ void EV_CrumbleChain(sector_t *sec, ffloor_t *rover)
// soundorg z height never gets set normally, so MEH. // soundorg z height never gets set normally, so MEH.
sec->soundorg.z = sec->floorheight; sec->soundorg.z = sec->floorheight;
if (sound) // SRB2kart 16/04/10
S_StartSound(&sec->soundorg, sfx_crumbl); S_StartSound(&sec->soundorg, sfx_crumbl);
// Find the outermost vertexes in the subsector // Find the outermost vertexes in the subsector

View file

@ -218,6 +218,8 @@ static void P_ClearSingleMapHeaderInfo(INT16 i)
mapheaderinfo[num]->levelflags = 0; mapheaderinfo[num]->levelflags = 0;
DEH_WriteUndoline("MENUFLAGS", va("%d", mapheaderinfo[num]->menuflags), UNDO_NONE); DEH_WriteUndoline("MENUFLAGS", va("%d", mapheaderinfo[num]->menuflags), UNDO_NONE);
mapheaderinfo[num]->menuflags = 0; mapheaderinfo[num]->menuflags = 0;
DEH_WriteUndoline("AUTOMAP", va("%d", mapheaderinfo[num].automap), UNDO_NONE); // SRB2kart 16/04/10
mapheaderinfo[num].automap = false;
// TODO grades support for delfile (pfft yeah right) // TODO grades support for delfile (pfft yeah right)
P_DeleteGrades(num); P_DeleteGrades(num);
// an even further impossibility, delfile custom opts support // an even further impossibility, delfile custom opts support
@ -967,6 +969,7 @@ static void P_LoadThings(lumpnum_t lumpnum)
} }
} }
/* // SRB2kart 16/04/10
static inline void P_SpawnEmblems(void) static inline void P_SpawnEmblems(void)
{ {
INT32 i, color; INT32 i, color;
@ -1002,9 +1005,13 @@ static inline void P_SpawnEmblems(void)
emblemmobj->frame &= ~FF_TRANSMASK; emblemmobj->frame &= ~FF_TRANSMASK;
} }
} }
*/
static void P_SpawnSecretItems(boolean loademblems) static void P_SpawnSecretItems(boolean loademblems)
{ {
(void)loademblems; // SRB2kart 16/04/10
return; //no secret items here!
// Now let's spawn those funky emblem things! Tails 12-08-2002 // Now let's spawn those funky emblem things! Tails 12-08-2002
if (netgame || multiplayer || (modifiedgame && !savemoddata)) // No cheating!! if (netgame || multiplayer || (modifiedgame && !savemoddata)) // No cheating!!
return; return;
@ -2061,6 +2068,9 @@ static void P_LevelInitStuff(void)
players[i].aiming = 0; players[i].aiming = 0;
players[i].pflags &= ~PF_TIMEOVER; players[i].pflags &= ~PF_TIMEOVER;
memset(players[i].checkpointtimes, 0, sizeof(players[i].checkpointtimes)); // SRB2kart 16/04/10
players[i].playerahead = 0;
players[i].losstime = 0; players[i].losstime = 0;
players[i].timeshit = 0; players[i].timeshit = 0;
@ -2429,6 +2439,9 @@ boolean P_SetupLevel(boolean skipprecip)
// As oddly named as this is, this handles music only. // As oddly named as this is, this handles music only.
// We should be fine starting it here. // We should be fine starting it here.
if (leveltime < 157) // SRB2kart 16/04/10
S_StopMusic();
if (leveltime > 157)
S_Start(); S_Start();
// Let's fade to black here // Let's fade to black here
@ -2586,7 +2599,7 @@ boolean P_SetupLevel(boolean skipprecip)
{ {
players[i].mo = NULL; players[i].mo = NULL;
if (players[i].starposttime) if (players[i].starpostnum) // .starposttime // SRB2kart 16/04/10
{ {
G_SpawnPlayer(i, true); G_SpawnPlayer(i, true);
P_ClearStarPost(players[i].starpostnum); P_ClearStarPost(players[i].starpostnum);

View file

@ -203,6 +203,8 @@ static animdef_t harddefs[] =
{true, "ERFANX4", "ERFANX1", 1}, {true, "ERFANX4", "ERFANX1", 1},
{true, "DISCOD4", "DISCOD1", 15}, {true, "DISCOD4", "DISCOD1", 15},
{true, "DANCE4", "DANCE1", 8}, {true, "DANCE4", "DANCE1", 8},
{true, "LGHTNNG2", "LGHTNNG1", 2}, // SRB2kart 16/04/10
{true, "EFZFAN4", "EFZFAN1", 2}, //
{true, "SKY135", "SKY132", 2}, {true, "SKY135", "SKY132", 2},
{true, "APPLMS4", "APPLMS1", 2}, {true, "APPLMS4", "APPLMS1", 2},
{true, "APBOXW3", "APBOXW1", 2}, {true, "APBOXW3", "APBOXW1", 2},
@ -2370,6 +2372,9 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec)
if (!dest) if (!dest)
return; return;
if (mo->player) // SRB2kart 16/04/10
mo->player->powers[pw_ramp] = 0; //
if (bot) if (bot)
P_Teleport(bot, dest->x, dest->y, dest->z, (line->flags & ML_NOCLIMB) ? mo->angle : dest->angle, (line->flags & ML_BLOCKMONSTERS) == 0, (line->flags & ML_EFFECT4) == ML_EFFECT4); P_Teleport(bot, dest->x, dest->y, dest->z, (line->flags & ML_NOCLIMB) ? mo->angle : dest->angle, (line->flags & ML_BLOCKMONSTERS) == 0, (line->flags & ML_EFFECT4) == ML_EFFECT4);
if (line->flags & ML_BLOCKMONSTERS) if (line->flags & ML_BLOCKMONSTERS)
@ -2879,7 +2884,7 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec)
return; return;
} }
EV_CrumbleChain(sec, rover); EV_CrumbleChain(sec, rover, 1); // SRB2kart 16/04/10
} }
} }
break; break;
@ -3115,6 +3120,9 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec)
case 491: case 491:
PolyTranslucency(line); PolyTranslucency(line);
break; break;
case 492: // DeNiGHTserize player // SRB2kart 16/04/10
mo->player->nightstime = 0;
break;
#endif #endif
default: default:
@ -3679,6 +3687,10 @@ DoneSection2:
P_InstaThrust(player->mo, player->mo->angle, linespeed); P_InstaThrust(player->mo, player->mo->angle, linespeed);
player->cmd.forwardmove = 1; // SRB2kart 16/04/10
player->powers[pw_exspeed] = 60; //
P_SetPlayerMobjState(player->mo, S_PLAY_SPD1); //
if (GETSECSPECIAL(sector->special, 3) == 6 && (player->charability2 == CA2_SPINDASH)) if (GETSECSPECIAL(sector->special, 3) == 6 && (player->charability2 == CA2_SPINDASH))
{ {
if (!(player->pflags & PF_SPINNING)) if (!(player->pflags & PF_SPINNING))
@ -3907,15 +3919,17 @@ DoneSection2:
P_SetTarget(&player->mo->tracer, waypoint); P_SetTarget(&player->mo->tracer, waypoint);
player->speed = speed; player->speed = speed;
player->pflags |= PF_SPINNING; player->powers[pw_tailsfly] = 0; // SRB2kart 16/04/10
player->pflags &= ~PF_SPINNING; //
player->pflags &= ~PF_JUMPED; player->pflags &= ~PF_JUMPED;
player->pflags &= ~PF_GLIDING; player->pflags &= ~PF_GLIDING;
player->climbing = 0; player->climbing = 0;
if (!(player->mo->state >= &states[S_PLAY_ATK1] && player->mo->state <= &states[S_PLAY_ATK4])) // SRB2kart 16/04/10
if (!(player->mo->state >= &states[S_PLAY_KARTRUN1] && player->mo->state <= &states[S_PLAY_KARTRUN2]))
{ {
P_SetPlayerMobjState(player->mo, S_PLAY_ATK1); P_SetPlayerMobjState(player->mo, S_PLAY_KARTRUN1);
S_StartSound(player->mo, sfx_spin); S_StartSound(player->mo, sfx_spin); // Do we want/need this? -Zarro
} }
} }
break; break;
@ -3981,18 +3995,23 @@ DoneSection2:
P_SetTarget(&player->mo->tracer, waypoint); P_SetTarget(&player->mo->tracer, waypoint);
player->speed = speed; player->speed = speed;
player->pflags |= PF_SPINNING; player->powers[pw_tailsfly] = 0; // SRB2kart 16/04/10
player->pflags &= ~PF_SPINNING; //
player->pflags &= ~PF_JUMPED; player->pflags &= ~PF_JUMPED;
if (!(player->mo->state >= &states[S_PLAY_ATK1] && player->mo->state <= &states[S_PLAY_ATK4])) // SRB2kart 16/04/10
if (!(player->mo->state >= &states[S_PLAY_KARTRUN1] && player->mo->state <= &states[S_PLAY_KARTRUN2]))
{ {
P_SetPlayerMobjState(player->mo, S_PLAY_ATK1); P_SetPlayerMobjState(player->mo, S_PLAY_KARTRUN1);
S_StartSound(player->mo, sfx_spin); S_StartSound(player->mo, sfx_spin); // Do we want/need this? -Zarro
} }
} }
break; break;
case 10: // Finish Line case 10: // Finish Line
if (gametype == GT_RACE) // SRB2kart 16/04/10
if (player->starpostnum == numstarposts || player->exiting) // Must have touched all the starposts
player->starpostwp = player->powers[pw_waypoint] = 0; //
if (gametype == GT_RACE && !player->exiting) if (gametype == GT_RACE && !player->exiting)
{ {
if (player->starpostnum == numstarposts) // Must have touched all the starposts if (player->starpostnum == numstarposts) // Must have touched all the starposts
@ -4004,12 +4023,43 @@ DoneSection2:
if (player->laps >= (UINT8)cv_numlaps.value) if (player->laps >= (UINT8)cv_numlaps.value)
CONS_Printf(M_GetText("%s has finished the race.\n"), player_names[player-players]); CONS_Printf(M_GetText("%s has finished the race.\n"), player_names[player-players]);
else if (player->laps == (unsigned)(cv_numlaps.value - 1)) // SRB2kart 16/04/10
CONS_Printf(M_GetText("%s started the final lap\n"), player_names[player-players]); //
if (player->laps < (unsigned)(cv_numlaps.value - 1))
CONS_Printf(M_GetText("%s started lap %u\n"), player_names[player-players], (UINT32)player->laps+1); CONS_Printf(M_GetText("%s started lap %u\n"), player_names[player-players], (UINT32)player->laps+1);
// Reset starposts (checkpoints) info // Reset starposts (checkpoints) info // SRB2kart 16/04/10 ~
player->starpostangle = player->starpostnum = player->starpostbit = 0;
player->starpostx = player->starposty = player->starpostz = 0;
//except the time!
player->starposttime = player->realtime;
if (((numstarposts+1)*player->laps - 1) < 256) //SIGSEGV prevention
player->checkpointtimes[(numstarposts+1)*player->laps - 1] = player->realtime;
player->playerahead = P_CheckPlayerAhead(player, (numstarposts+1)*player->laps - 1);
if (P_IsLocalPlayer(player))
{
if (player->laps < (unsigned)(cv_numlaps.value - 1))
{
S_StartSound(NULL, sfx_mlap);
player->airtime = -64; // ?
}
else if (player->laps == (unsigned)(cv_numlaps.value - 1))
{
player->airtime = -64; // ?
if (!splitscreen || (splitscreen && !players[consoleplayer].exiting
&& !players[secondarydisplayplayer].exiting))
{
player->powers[pw_sounds] = 1;
S_ChangeMusic(mus_chrsel, false);
}
}
} // SRB2kart 16/04/10 ~
/*
player->starpostangle = player->starposttime = player->starpostnum = 0; player->starpostangle = player->starposttime = player->starpostnum = 0;
player->starpostx = player->starposty = player->starpostz = 0; player->starpostx = player->starposty = player->starpostz = 0;
*/
P_ResetStarposts(); P_ResetStarposts();
// Play the starpost sound for 'consistency' // Play the starpost sound for 'consistency'
@ -4027,9 +4077,22 @@ DoneSection2:
{ {
if (P_IsLocalPlayer(player)) if (P_IsLocalPlayer(player))
{ {
if (!splitscreen) // SRB2kart 16/04/10 ~
{
if (player->position == 1)
S_ChangeMusic(mus_mwin, true);
else if (player->position == 2 || player->position == 3)
S_ChangeMusic(mus_mok, true);
else if (player->position >= 4)
S_ChangeMusic(mus_mlose, true);
}
else
S_ChangeMusic(mus_mwin, true); // SRB2kart 16/04/10 ~
/*
HU_SetCEchoFlags(0); HU_SetCEchoFlags(0);
HU_SetCEchoDuration(5); HU_SetCEchoDuration(5);
HU_DoCEcho("FINISHED!"); HU_DoCEcho("FINISHED!");
*/
} }
P_DoPlayerExit(player); P_DoPlayerExit(player);
@ -4061,6 +4124,11 @@ DoneSection2:
if (player->cmd.buttons & BT_USE) if (player->cmd.buttons & BT_USE)
break; break;
// SRB2kart 16/04/10
if (player->mo->state == &states[S_PLAY_PAIN] || player->mo->state == &states[S_PLAY_KARTPAIN]
|| player->mo->state == &states[S_PLAY_KARTSPAIN] || player->mo->state == &states[S_PLAY_RPAIN])
break;
if (!(player->pflags & PF_SLIDING) && player->mo->state == &states[player->mo->info->painstate]) if (!(player->pflags & PF_SLIDING) && player->mo->state == &states[player->mo->info->painstate])
break; break;
@ -7435,7 +7503,15 @@ void T_Pusher(pusher_t *p)
if (thing->player && thing->player->pflags & PF_ROPEHANG) if (thing->player && thing->player->pflags & PF_ROPEHANG)
continue; continue;
if (thing->player && (thing->state == &states[thing->info->painstate]) && (thing->player->powers[pw_flashing] > (flashingtics/4)*3 && thing->player->powers[pw_flashing] <= flashingtics)) //if (thing->player && (thing->state == &states[thing->info->painstate])
//&& (thing->player->powers[pw_flashing] > (flashingtics/4)*3
//&& thing->player->powers[pw_flashing] <= flashingtics))
// SRB2kart 16/04/10
if (thing->player && (thing->state == &states[S_PLAY_PAIN] || thing->state == &states[S_PLAY_KARTPAIN]
|| thing->state == &states[S_PLAY_KARTSPAIN] || thing->state == &states[S_PLAY_RPAIN])
&& (thing->player->powers[pw_flashing] > (flashingtics/4)*3
&& thing->player->powers[pw_flashing] <= flashingtics))
continue; continue;
inFOF = touching = moved = false; inFOF = touching = moved = false;

View file

@ -314,7 +314,7 @@ result_e T_MovePlane(sector_t *sector, fixed_t speed, fixed_t dest, boolean crus
INT32 floorOrCeiling, INT32 direction); INT32 floorOrCeiling, INT32 direction);
INT32 EV_DoFloor(line_t *line, floor_e floortype); INT32 EV_DoFloor(line_t *line, floor_e floortype);
INT32 EV_DoElevator(line_t *line, elevator_e elevtype, boolean customspeed); INT32 EV_DoElevator(line_t *line, elevator_e elevtype, boolean customspeed);
void EV_CrumbleChain(sector_t *sec, ffloor_t *rover); void EV_CrumbleChain(sector_t *sec, ffloor_t *rover, INT32 sound); // SRB2kart 16/04/10
INT32 EV_BounceSector(sector_t *sector, fixed_t momz, line_t *sourceline); INT32 EV_BounceSector(sector_t *sector, fixed_t momz, line_t *sourceline);
// Some other special 3dfloor types // Some other special 3dfloor types