diff options
author | James Haley | 2010-09-13 03:27:49 +0000 |
---|---|---|
committer | James Haley | 2010-09-13 03:27:49 +0000 |
commit | 7298899199a5bb750c66c4b52227e9e979f8d260 (patch) | |
tree | 497ac394220584a4ee38cd7be38b31bf40cdd02e /src/strife | |
parent | 2016bb4f4b3c00b6d037727d0a5f4e7e6847fc0b (diff) | |
download | chocolate-doom-7298899199a5bb750c66c4b52227e9e979f8d260.tar.gz chocolate-doom-7298899199a5bb750c66c4b52227e9e979f8d260.tar.bz2 chocolate-doom-7298899199a5bb750c66c4b52227e9e979f8d260.zip |
Started finale slideshow stuff, added/tweaked quest flags, and did some
elimination of tabs in altered functions. Also refactored a few strings
to use DEH_String.
Subversion-branch: /branches/strife-branch
Subversion-revision: 2082
Diffstat (limited to 'src/strife')
-rw-r--r-- | src/strife/doomdef.h | 49 | ||||
-rw-r--r-- | src/strife/f_finale.c | 41 | ||||
-rw-r--r-- | src/strife/p_inter.c | 78 | ||||
-rw-r--r-- | src/strife/p_mobj.c | 2 | ||||
-rw-r--r-- | src/strife/p_switch.c | 70 | ||||
-rw-r--r-- | src/strife/p_user.c | 214 |
6 files changed, 262 insertions, 192 deletions
diff --git a/src/strife/doomdef.h b/src/strife/doomdef.h index 215c20f3..93cb99ed 100644 --- a/src/strife/doomdef.h +++ b/src/strife/doomdef.h @@ -199,10 +199,10 @@ typedef enum } powertype_t; // villsa [STRIFE] -// quest flags +// quest numbers typedef enum { - tk_quest1 = 1, + tk_quest1, tk_quest2, tk_quest3, tk_quest4, @@ -233,11 +233,50 @@ typedef enum tk_quest29, tk_quest30, tk_quest31, - tk_quest32, - NUMQUESTS, - tk_allquests = 0x7fffffff + tk_quest32, // most likely unused + tk_numquests, } questtype_t; +// haleyjd 09/12/10: [STRIFE] +// flag values for each quest. +enum +{ + QF_QUEST1 = (1 << tk_quest1), + QF_QUEST2 = (1 << tk_quest2), + QF_QUEST3 = (1 << tk_quest3), + QF_QUEST4 = (1 << tk_quest4), + QF_QUEST5 = (1 << tk_quest5), + QF_QUEST6 = (1 << tk_quest6), + QF_QUEST7 = (1 << tk_quest7), + QF_QUEST8 = (1 << tk_quest8), + QF_QUEST9 = (1 << tk_quest9), + QF_QUEST10 = (1 << tk_quest10), + QF_QUEST11 = (1 << tk_quest11), + QF_QUEST12 = (1 << tk_quest12), + QF_QUEST13 = (1 << tk_quest13), + QF_QUEST14 = (1 << tk_quest14), + QF_QUEST15 = (1 << tk_quest15), + QF_QUEST16 = (1 << tk_quest16), + QF_QUEST17 = (1 << tk_quest17), + QF_QUEST18 = (1 << tk_quest18), + QF_QUEST19 = (1 << tk_quest19), + QF_QUEST20 = (1 << tk_quest20), + QF_QUEST21 = (1 << tk_quest21), + QF_QUEST22 = (1 << tk_quest22), + QF_QUEST23 = (1 << tk_quest23), + QF_QUEST24 = (1 << tk_quest24), + QF_QUEST25 = (1 << tk_quest25), + QF_QUEST26 = (1 << tk_quest26), + QF_QUEST27 = (1 << tk_quest27), + QF_QUEST28 = (1 << tk_quest28), + QF_QUEST29 = (1 << tk_quest29), + QF_QUEST30 = (1 << tk_quest30), + QF_QUEST31 = (1 << tk_quest31), + QF_QUEST32 = (1 << tk_quest32), // note seems to be unused + + QF_ALLQUESTS = (QF_QUEST31 + (QF_QUEST31 - 1)) // does not include bit 32! +}; + // // Power up durations, // how many seconds till expiration, diff --git a/src/strife/f_finale.c b/src/strife/f_finale.c index 68c07af1..e2294847 100644 --- a/src/strife/f_finale.c +++ b/src/strife/f_finale.c @@ -62,6 +62,11 @@ finalestage_t finalestage; unsigned int finalecount; +// haleyjd 09/12/10: [STRIFE] Slideshow variables +char *slideshow_panel; +int slideshow_tics; +int slideshow_state; + #define TEXTSPEED 3 #define TEXTWAIT 250 @@ -115,21 +120,45 @@ void F_CastDrawer (void); // void F_StartFinale (void) { + patch_t *panel; size_t i; gameaction = ga_nothing; gamestate = GS_FINALE; viewactive = false; automapactive = false; + wipegamestate = -1; // [STRIFE] - if (gamemission == doom) - { - S_ChangeMusic(mus_logo, true); // villsa [STRIFE] TODO - fix music - } - else + // [STRIFE] Setup the slide show + slideshow_panel = DEH_String("PANEL0"); + + panel = (patch_t *)W_CacheLumpName(slideshow_panel, PU_CACHE); + V_DrawPatch(0, 0, panel); + + // haleyjd: NOT FINISHED +#if 0 + switch(gamemap) { - S_ChangeMusic(mus_logo, true); // villsa [STRIFE] TODO - fix music + case 3: + slideshow_state = 1; + break; + case 9: + slideshow_state = -99; + break; + case 10: + slideshow_state = 5; + break; + case 29: + if(!netgame) + { + if(players[0].health < 0) + slideshow_state = 17; + else + { + } + } } +#endif // Find the right screen and set the text and background diff --git a/src/strife/p_inter.c b/src/strife/p_inter.c index 4a50de4c..56fd24b0 100644 --- a/src/strife/p_inter.c +++ b/src/strife/p_inter.c @@ -594,7 +594,7 @@ void P_TouchSpecialThing(mobj_t* special, mobj_t* toucher) // [STRIFE] TODO - verify this. Seems that questflag isn't // applied if the special's speed is equal to 8 or if // the player has recieved a specific quest token - if(special->info->speed != 8 || !(player->questflags & 32)) + if(special->info->speed != 8 || !(player->questflags & QF_QUEST6)) player->questflags |= 1 << (special->info->speed - 1); } @@ -623,32 +623,32 @@ void P_KillMobj(mobj_t* source, mobj_t* target) mobj_t* mo; line_t junk; int i; - + // villsa [STRIFE] corpse and dropoff are removed, but why when these two flags // are set a few lines later? watcom nonsense perhaps? target->flags &= ~(MF_SHOOTABLE|MF_FLOAT|MF_BOUNCE|MF_CORPSE|MF_DROPOFF); // villsa [STRIFE] unused /*if (target->type != MT_SKULL) - target->flags &= ~MF_NOGRAVITY;*/ + target->flags &= ~MF_NOGRAVITY;*/ target->flags |= MF_CORPSE|MF_DROPOFF; target->height = FRACUNIT; // villsa [STRIFE] set to fracunit instead of >>= 2 if(source && source->player) { - // count for intermission - if(target->flags & MF_COUNTKILL) - source->player->killcount++; + // count for intermission + if(target->flags & MF_COUNTKILL) + source->player->killcount++; - if(target->player) + if(target->player) { - source->player->frags[target->player-players]++; + source->player->frags[target->player-players]++; // villsa [STRIFE] new messages when fragging players - sprintf(plrkilledmsg, "%s killed %s", - pnameprefixes[source->player->mo->miscdata], - pnameprefixes[target->player->mo->miscdata]); + sprintf(plrkilledmsg, DEH_String("%s killed %s"), + pnameprefixes[source->player->mo->miscdata], + pnameprefixes[target->player->mo->miscdata]); if(netgame) players[consoleplayer].message = plrkilledmsg; @@ -656,16 +656,16 @@ void P_KillMobj(mobj_t* source, mobj_t* target) } else if(!netgame && (target->flags & MF_COUNTKILL)) { - // count all monster deaths, - // even those caused by other monsters - players[0].killcount++; + // count all monster deaths, + // even those caused by other monsters + players[0].killcount++; } if(target->player) { - // count environment kills against you - if(!source) - target->player->frags[target->player-players]++; + // count environment kills against you + if(!source) + target->player->frags[target->player-players]++; if(gamemap == 29 && !netgame) { @@ -689,7 +689,8 @@ void P_KillMobj(mobj_t* source, mobj_t* target) item = target->player->inventory[0].type; if(item == MT_MONY_1) { - loot = P_SpawnMobj(target->x, target->y, target->z + (24*FRACUNIT), MT_MONY_25); + loot = P_SpawnMobj(target->x, target->y, + target->z + (24*FRACUNIT), MT_MONY_25); // [STRIFE] TODO - what the hell is it doing here? loot->health = target->player->inventory[0].amount; @@ -699,7 +700,8 @@ void P_KillMobj(mobj_t* source, mobj_t* target) } else { - loot = P_SpawnMobj(target->x, target->y, target->z + (24*FRACUNIT), item); + loot = P_SpawnMobj(target->x, target->y, + target->z + (24*FRACUNIT), item); amount = 1; } @@ -710,20 +712,20 @@ void P_KillMobj(mobj_t* source, mobj_t* target) loot->flags |= MF_DROPPED; } } - - target->flags &= ~MF_SOLID; - target->player->playerstate = PST_DEAD; + + target->flags &= ~MF_SOLID; + target->player->playerstate = PST_DEAD; target->player->mo->momz = (5*FRACUNIT); - P_DropWeapon(target->player); - - if(target->player == &players[consoleplayer] - && automapactive) - { - // don't die in auto map, - // switch view prior to dying - AM_Stop (); - } - + P_DropWeapon(target->player); + + if(target->player == &players[consoleplayer] + && automapactive) + { + // don't die in auto map, + // switch view prior to dying + AM_Stop (); + } + } // villsa [STRIFE] some modifications to setting states @@ -744,7 +746,7 @@ void P_KillMobj(mobj_t* source, mobj_t* target) // villsa [STRIFE] unused /*target->tics -= P_Random()&3; if (target->tics < 1) - target->tics = 1;*/ + target->tics = 1;*/ // Drop stuff. // villsa [STRIFE] get item from dialog target @@ -809,11 +811,11 @@ void P_KillMobj(mobj_t* source, mobj_t* target) junk.tag = 44; EV_DoFloor(&junk, lowerFloor); - I_StartVoice("VOC13"); - if(W_CheckNumForName("LOG13") != -1) + I_StartVoice(DEH_String("VOC13")); + if(W_CheckNumForName(DEH_String("LOG13")) != -1) { strncpy(mission_objective, - W_CacheLumpName("LOG13", PU_CACHE), OBJECTIVE_LEN); + W_CacheLumpName(DEH_String("LOG13"), PU_CACHE), OBJECTIVE_LEN); } item = MT_COUPLING_BROKEN; players[0].questflags |= (1 << (mobjinfo[MT_COUPLING].speed - 1)); @@ -832,7 +834,7 @@ void P_KillMobj(mobj_t* source, mobj_t* target) EV_DoDoor(&junk, close); P_NoiseAlert(players[0].mo, players[0].mo); - sprintf(plrkilledmsg, "You're dead! You set off the alarm."); + sprintf(plrkilledmsg, "%s", DEH_String("You're dead! You set off the alarm.")); if(!deathmatch) players[consoleplayer].message = plrkilledmsg; @@ -869,7 +871,7 @@ void P_KillMobj(mobj_t* source, mobj_t* target) case MT_TOKEN_ALARM: P_NoiseAlert(players[0].mo, players[0].mo); - sprintf(plrkilledmsg, "You Fool! You've set off the alarm"); + sprintf(plrkilledmsg, "%s", DEH_String("You Fool! You've set off the alarm")); if(!deathmatch) players[consoleplayer].message = plrkilledmsg; return; diff --git a/src/strife/p_mobj.c b/src/strife/p_mobj.c index 8875855b..2fdd7a51 100644 --- a/src/strife/p_mobj.c +++ b/src/strife/p_mobj.c @@ -809,7 +809,7 @@ void P_SpawnPlayer(mapthing_t* mthing) if(deathmatch) { p->accuracy = 50; - p->questflags = tk_allquests; + p->questflags = QF_ALLQUESTS; // 0x7fffffff /*for(i = 0; i < NUMCARDS; i++) p->cards[i] = true;*/ diff --git a/src/strife/p_switch.c b/src/strife/p_switch.c index 93ad3f81..d7705902 100644 --- a/src/strife/p_switch.c +++ b/src/strife/p_switch.c @@ -255,7 +255,7 @@ void P_ChangeSwitchTexture(line_t* line, int useAgain) texTop = sides[line->sidenum[0]].toptexture; texMid = sides[line->sidenum[0]].midtexture; texBot = sides[line->sidenum[0]].bottomtexture; - + sound = sfx_swtchn; // EXIT SWITCH? @@ -278,54 +278,54 @@ void P_ChangeSwitchTexture(line_t* line, int useAgain) } if(!useAgain) - line->special = 0; - + line->special = 0; + for(i = 0; i < numswitches*2; i++) { sl = &alphSwitchList[i / 2]; // villsa [STRIFE] - if(switchlist[i] == texTop) - { + if(switchlist[i] == texTop) + { // villsa [STRIFE] set sound if(sl->sound) sound = sl->sound; - S_StartSound(buttonlist->soundorg,sound); - sides[line->sidenum[0]].toptexture = switchlist[i^1]; + S_StartSound(buttonlist->soundorg,sound); + sides[line->sidenum[0]].toptexture = switchlist[i^1]; - if(useAgain) - P_StartButton(line,top,switchlist[i],BUTTONTIME); + if(useAgain) + P_StartButton(line,top,switchlist[i],BUTTONTIME); if(breakglass) P_SpawnBrokenGlass(line); - return; - } - else - { - if(switchlist[i] == texMid) - { + return; + } + else + { + if(switchlist[i] == texMid) + { // villsa [STRIFE] set sound if(sl->sound) sound = sl->sound; - S_StartSound(buttonlist->soundorg,sound); - sides[line->sidenum[0]].midtexture = switchlist[i^1]; + S_StartSound(buttonlist->soundorg,sound); + sides[line->sidenum[0]].midtexture = switchlist[i^1]; // villsa [STRIFE] affect second side of line if(line->flags & ML_TWOSIDED) sides[line->sidenum[1]].midtexture = switchlist[i^1]; - if(useAgain) - P_StartButton(line, middle,switchlist[i],BUTTONTIME); + if(useAgain) + P_StartButton(line, middle,switchlist[i],BUTTONTIME); // villsa [STRIFE] if(sound == sfx_firxpl) { breakglass = true; - // give quest token #28 to player - players[0].questflags |= (1 << tk_quest28); + // give quest flag 29 to player + players[0].questflags |= QF_QUEST29; // give stamina/accuracy items if(!netgame) @@ -340,29 +340,29 @@ void P_ChangeSwitchTexture(line_t* line, int useAgain) if(breakglass || sound == sfx_bglass) P_SpawnBrokenGlass(line); - return; - } - else - { - if(switchlist[i] == texBot) - { + return; + } + else + { + if(switchlist[i] == texBot) + { // villsa [STRIFE] set sound if(sl->sound) sound = sl->sound; - S_StartSound(buttonlist->soundorg,sound); - sides[line->sidenum[0]].bottomtexture = switchlist[i^1]; + S_StartSound(buttonlist->soundorg,sound); + sides[line->sidenum[0]].bottomtexture = switchlist[i^1]; - if(useAgain) - P_StartButton(line, bottom,switchlist[i],BUTTONTIME); + if(useAgain) + P_StartButton(line, bottom,switchlist[i],BUTTONTIME); if(breakglass) P_SpawnBrokenGlass(line); - return; - } - } - } + return; + } + } + } } } diff --git a/src/strife/p_user.c b/src/strife/p_user.c index fa0e3f28..ca82f7f0 100644 --- a/src/strife/p_user.c +++ b/src/strife/p_user.c @@ -312,43 +312,43 @@ void P_PlayerThink (player_t* player) { ticcmd_t* cmd; weapontype_t newweapon; - + // fixme: do this in the cheat code // villsa [STRIFE] TODO - verify if unused if (player->cheats & CF_NOCLIP) - player->mo->flags |= MF_NOCLIP; + player->mo->flags |= MF_NOCLIP; else - player->mo->flags &= ~MF_NOCLIP; - + player->mo->flags &= ~MF_NOCLIP; + // chain saw run forward cmd = &player->cmd; if (player->mo->flags & MF_JUSTATTACKED) { - cmd->angleturn = 0; - cmd->forwardmove = 0xc800/512; - cmd->sidemove = 0; - player->mo->flags &= ~MF_JUSTATTACKED; + cmd->angleturn = 0; + cmd->forwardmove = 0xc800/512; + cmd->sidemove = 0; + player->mo->flags &= ~MF_JUSTATTACKED; } - - + + if (player->playerstate == PST_DEAD) { - P_DeathThink (player); - return; + P_DeathThink (player); + return; } - + // Move around. // Reactiontime is used to prevent movement // for a bit after a teleport. if (player->mo->reactiontime) - player->mo->reactiontime--; + player->mo->reactiontime--; else - P_MovePlayer (player); - + P_MovePlayer (player); + P_CalcHeight (player); if (player->mo->subsector->sector->special) - P_PlayerInSpecialSector (player); + P_PlayerInSpecialSector (player); // villsa [STRIFE] handle inventory input if(!player->inventorydown) @@ -364,19 +364,19 @@ void P_PlayerThink (player_t* player) // villsa [STRIFE] TODO - add workparm variable /*if(workparm) { - int cheat = player->cheats ^ 1; - player->cheats ^= CF_NOCLIP; - - if(cheat & CF_NOCLIP) - { - player->message = "No Clipping Mode ON"; - player->mo->flags |= MF_NOCLIP; - } - else - { - player->mo->flags &= ~MF_NOCLIP; - player->message = "No Clipping Mode OFF"; - } + int cheat = player->cheats ^ 1; + player->cheats ^= CF_NOCLIP; + + if(cheat & CF_NOCLIP) + { + player->message = "No Clipping Mode ON"; + player->mo->flags |= MF_NOCLIP; + } + else + { + player->mo->flags &= ~MF_NOCLIP; + player->message = "No Clipping Mode OFF"; + } }*/ } @@ -385,75 +385,75 @@ void P_PlayerThink (player_t* player) } else player->inventorydown = false; - + // Check for weapon change. // A special event has no other buttons. if (cmd->buttons & BT_SPECIAL) - cmd->buttons = 0; - + cmd->buttons = 0; + if (cmd->buttons & BT_CHANGE) { - // The actual changing of the weapon is done - // when the weapon psprite can do it - // (read: not in the middle of an attack). - newweapon = (cmd->buttons&BT_WEAPONMASK)>>BT_WEAPONSHIFT; + // The actual changing of the weapon is done + // when the weapon psprite can do it + // (read: not in the middle of an attack). + newweapon = (cmd->buttons&BT_WEAPONMASK)>>BT_WEAPONSHIFT; // villsa [STRIFE] TODO - placeholder if (player->weaponowned[newweapon] - && newweapon != player->readyweapon) - { + && newweapon != player->readyweapon) + { player->pendingweapon = newweapon; - } - + } + // villsa [STRIFE] TODO - MUST FIX!!! - /*if (newweapon == wp_fist - && player->weaponowned[wp_chainsaw] - && !(player->readyweapon == wp_chainsaw - && player->powers[pw_strength])) - { - newweapon = wp_chainsaw; - } - - if ( (gamemode == commercial) - && newweapon == wp_shotgun - && player->weaponowned[wp_supershotgun] - && player->readyweapon != wp_supershotgun) - { - newweapon = wp_supershotgun; - } - + /*if (newweapon == wp_fist + && player->weaponowned[wp_chainsaw] + && !(player->readyweapon == wp_chainsaw + && player->powers[pw_strength])) + { + newweapon = wp_chainsaw; + } - if (player->weaponowned[newweapon] - && newweapon != player->readyweapon) - { - // Do not go to plasma or BFG in shareware, - // even if cheated. - if ((newweapon != wp_plasma - && newweapon != wp_bfg) - || (gamemode != shareware) ) - { - player->pendingweapon = newweapon; - } - }*/ + if ( (gamemode == commercial) + && newweapon == wp_shotgun + && player->weaponowned[wp_supershotgun] + && player->readyweapon != wp_supershotgun) + { + newweapon = wp_supershotgun; + } + + + if (player->weaponowned[newweapon] + && newweapon != player->readyweapon) + { + // Do not go to plasma or BFG in shareware, + // even if cheated. + if ((newweapon != wp_plasma + && newweapon != wp_bfg) + || (gamemode != shareware) ) + { + player->pendingweapon = newweapon; + } + }*/ } - + // check for use if (cmd->buttons & BT_USE) { - if (!player->usedown) - { + if (!player->usedown) + { P_DialogStart(player); // villsa [STRIFE] - P_UseLines (player); - player->usedown = true; - } + P_UseLines (player); + player->usedown = true; + } } else - player->usedown = false; - + player->usedown = false; + // cycle psprites P_MovePsprites (player); - + // Counters, time dependend power ups. // haleyjd 08/30/10: [STRIFE] @@ -470,28 +470,28 @@ void P_PlayerThink (player_t* player) // Strength counts up to diminish fade. if (player->powers[pw_strength]) - player->powers[pw_strength]++; - + player->powers[pw_strength]++; + // villsa [STRIFE] unused /*if (player->powers[pw_invulnerability]) - player->powers[pw_invulnerability]--;*/ + player->powers[pw_invulnerability]--;*/ if (player->powers[pw_invisibility]) - if (! --player->powers[pw_invisibility] ) - player->mo->flags &= ~MF_SHADOW; - + if (! --player->powers[pw_invisibility] ) + player->mo->flags &= ~MF_SHADOW; + // villsa [STRIFE] unused /*if (player->powers[pw_infrared]) - player->powers[pw_infrared]--;*/ - + player->powers[pw_infrared]--;*/ + if (player->powers[pw_ironfeet]) - player->powers[pw_ironfeet]--; - + player->powers[pw_ironfeet]--; + if (player->damagecount) - player->damagecount--; - + player->damagecount--; + if (player->bonuscount) - player->bonuscount--; + player->bonuscount--; // villsa [STRIFE] checks for extralight if(player->extralight >= 0) @@ -501,33 +501,33 @@ void P_PlayerThink (player_t* player) else player->fixedcolormap = 0; } - else + else // Sigil shock: player->fixedcolormap = INVERSECOLORMAP; - + // villsa [STRIFE] unused // Handling colormaps. /*if (player->powers[pw_invulnerability]) { - if (player->powers[pw_invulnerability] > 4*32 - || (player->powers[pw_invulnerability]&8) ) - player->fixedcolormap = INVERSECOLORMAP; - else - player->fixedcolormap = 0; + if (player->powers[pw_invulnerability] > 4*32 + || (player->powers[pw_invulnerability]&8) ) + player->fixedcolormap = INVERSECOLORMAP; + else + player->fixedcolormap = 0; } else if (player->powers[pw_infrared]) { - if (player->powers[pw_infrared] > 4*32 - || (player->powers[pw_infrared]&8) ) - { - // almost full bright - player->fixedcolormap = 1; - } - else - player->fixedcolormap = 0; + if (player->powers[pw_infrared] > 4*32 + || (player->powers[pw_infrared]&8) ) + { + // almost full bright + player->fixedcolormap = 1; + } + else + player->fixedcolormap = 0; } else - player->fixedcolormap = 0;*/ + player->fixedcolormap = 0;*/ } |