ref: ab144aa9d30a97f0c3a2d049d624c868aaba3af7
parent: e81e9d80c45f6ec0698adfbc77b10e37df8c4c26
author: James Haley <haleyjd@hotmail.com>
date: Sat Feb 5 00:57:12 EST 2011
Documented most of the questflags. Misc fixes: Removed "is turbo!" message, PST_REBORN set in G_DoLoadLevel if players.health <= 0, M_ClearRandom doesn't seed rndindex with time(), A_Chase doesn't check for target->health <= 0 when decrementing actor->threshold, and A_AcolyteSpecial fixed - ALL blue acolytes must be dead, not just one. Subversion-branch: /branches/strife-branch Subversion-revision: 2248
--- a/src/strife/doomdef.h
+++ b/src/strife/doomdef.h
@@ -243,34 +243,34 @@
// flag values for each quest.
enum
{ // Name Flag from bitnum Purpose, if known
- QF_QUEST1 = (1 << tk_quest1),
- QF_QUEST2 = (1 << tk_quest2),
- QF_QUEST3 = (1 << tk_quest3), // Permission to visit Irale
+ QF_QUEST1 = (1 << tk_quest1), // Obtained Beldin's ring
+ QF_QUEST2 = (1 << tk_quest2), // Stole the Chalice
+ QF_QUEST3 = (1 << tk_quest3), // Permission to visit Irale (visited Macil)
QF_QUEST4 = (1 << tk_quest4),
QF_QUEST5 = (1 << tk_quest5),
QF_QUEST6 = (1 << tk_quest6), // Destroyed the Power Coupling
QF_QUEST7 = (1 << tk_quest7), // Killed Blue Acolytes ("Scanning Team")
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_QUEST9 = (1 << tk_quest9), // Obtained Derwin's ear
+ QF_QUEST10 = (1 << tk_quest10), // Obtained Prison Pass
+ QF_QUEST11 = (1 << tk_quest11), // Obtained Prison Key
+ QF_QUEST12 = (1 << tk_quest12), // Obtained Judge Wolenick's hand
QF_QUEST13 = (1 << tk_quest13), // Freed the Prisoners
- QF_QUEST14 = (1 << tk_quest14),
- QF_QUEST15 = (1 << tk_quest15),
+ QF_QUEST14 = (1 << tk_quest14), // Destroyed the Power Crystal
+ QF_QUEST15 = (1 << tk_quest15), // Obtained Guard Uniform
QF_QUEST16 = (1 << tk_quest16), // Destroyed the Gate Mechanism
- QF_QUEST17 = (1 << tk_quest17),
+ QF_QUEST17 = (1 << tk_quest17), // Heard Macil's story about the Sigil (MAP10)
QF_QUEST18 = (1 << tk_quest18), // Obtained Oracle Pass
QF_QUEST19 = (1 << tk_quest19),
QF_QUEST20 = (1 << tk_quest20),
- QF_QUEST21 = (1 << tk_quest21), // Killed Bishop - TODO: verify!
+ QF_QUEST21 = (1 << tk_quest21), // Killed Bishop
QF_QUEST22 = (1 << tk_quest22), // Killed Oracle with QUEST21 set
QF_QUEST23 = (1 << tk_quest23), // Killed Oracle (always given)
QF_QUEST24 = (1 << tk_quest24), // Killed Macil
QF_QUEST25 = (1 << tk_quest25), // Destroyed the Converter
QF_QUEST26 = (1 << tk_quest26), // Killed Loremaster
- QF_QUEST27 = (1 << tk_quest27),
- QF_QUEST28 = (1 << tk_quest28), // ???? - checked by line type 228 STRIFE-TODO
+ QF_QUEST27 = (1 << tk_quest27), // Destroyed the Computer (checked for good ending)
+ QF_QUEST28 = (1 << tk_quest28), // Obtained Catacomb Key (checked by line type 228)
QF_QUEST29 = (1 << tk_quest29), // Destroyed the Mines Transmitter
QF_QUEST30 = (1 << tk_quest30),
QF_QUEST31 = (1 << tk_quest31),
--- a/src/strife/f_finale.c
+++ b/src/strife/f_finale.c
@@ -206,7 +206,7 @@
else
{
if((players[0].questflags & QF_QUEST25) && // Converter destroyed
- (players[0].questflags & QF_QUEST27)) // ????
+ (players[0].questflags & QF_QUEST27)) // Computer destroyed (wtf?!)
{
// Good ending - You get the hot babe.
slideshow_state = SLIDE_GOODEND1;
--- a/src/strife/g_game.c
+++ b/src/strife/g_game.c
@@ -103,7 +103,7 @@
gameaction_t gameaction;
gamestate_t gamestate;
skill_t gameskill = 2; // [STRIFE] Default value set to 2.
-boolean respawnmonsters;
+boolean respawnmonsters;
//int gameepisode;
int gamemap;
@@ -132,7 +132,8 @@
boolean playeringame[MAXPLAYERS];
player_t players[MAXPLAYERS];
-boolean turbodetected[MAXPLAYERS];
+// [STRIFE] unused
+//boolean turbodetected[MAXPLAYERS];
int consoleplayer; // player taking events and displaying
int displayplayer; // view being displayed
@@ -766,25 +767,28 @@
//skyflatnum = R_FlatNumForName(DEH_String(SKYFLATNAME));
levelstarttic = gametic; // for time calculation
-
+
if (wipegamestate == GS_LEVEL)
- wipegamestate = -1; // force a wipe
+ wipegamestate = -1; // force a wipe
gamestate = GS_LEVEL;
for (i=0 ; i<MAXPLAYERS ; i++)
{
- turbodetected[i] = false;
- if (playeringame[i] && players[i].playerstate == PST_DEAD)
- players[i].playerstate = PST_REBORN;
- memset (players[i].frags,0,sizeof(players[i].frags));
+ //turbodetected[i] = false; [STRIFE] unused
+
+ // haleyjd 20110204 [STRIFE]: PST_REBORN if players[i].health <= 0
+ if (playeringame[i] && (players[i].playerstate == PST_DEAD || players[i].health <= 0))
+ players[i].playerstate = PST_REBORN;
+ memset (players[i].frags,0,sizeof(players[i].frags));
}
-
+
P_SetupLevel (gamemap, 0, gameskill);
- displayplayer = consoleplayer; // view the guy you are playing
+ displayplayer = consoleplayer; // view the guy you are playing
+ starttime = I_GetTime(); // haleyjd 20110204 [STRIFE]
gameaction = ga_nothing;
Z_CheckHeap ();
-
+
// clear cmd building stuff
memset (gamekeydown, 0, sizeof(gamekeydown));
@@ -1058,7 +1062,10 @@
// over the past 4 seconds. offset the checking period
// for each player so messages are not displayed at the
// same time.
+ //
+ // haleyjd 20110204 [STRIFE] unused
+ /*
if (cmd->forwardmove > TURBOTHRESHOLD)
{
turbodetected[i] = true;
@@ -1074,6 +1081,7 @@
players[consoleplayer].message = turbomessage;
turbodetected[i] = false;
}
+ */
if (netgame && !netdemo && !(gametic%ticdup) )
{
--- a/src/strife/m_random.c
+++ b/src/strife/m_random.c
@@ -72,13 +72,15 @@
return rndtable[rndindex];
}
+//
+// M_ClearRandom
+//
+// haleyjd 20110204 [STRIFE]: No "seeding" of M_Random index
+//
void M_ClearRandom (void)
{
prndindex = 0;
-
- // Seed the M_Random counter from the system time
-
- rndindex = time(NULL) & 0xff;
+ rndindex = 0;
}
--- a/src/strife/p_enemy.c
+++ b/src/strife/p_enemy.c
@@ -980,7 +980,10 @@
// do some idle animation
if(P_Random() < 30)
- P_SetMobjState(actor, actor->info->spawnstate + 1 + (P_Random() & 1));
+ {
+ int t = P_Random();
+ P_SetMobjState(actor, (t & 1) + actor->info->spawnstate + 1);
+ }
// wander around a bit
if(!(actor->flags & MF_STAND) && P_Random() < 40)
@@ -1038,13 +1041,11 @@
// modify target threshold
if (actor->threshold)
{
- if (!actor->target
- || actor->target->health <= 0)
- {
- actor->threshold = 0;
- }
- else
+ // haleyjd 20110204 [STRIFE]: No health <= 0 check here!
+ if (actor->target)
actor->threshold--;
+ else
+ actor->threshold = 0;
}
// turn towards movement direction if not there yet
@@ -1063,7 +1064,7 @@
|| !(actor->target->flags&MF_SHOOTABLE))
{
// look for a new target
- if (P_LookForPlayers(actor,true))
+ if (P_LookForPlayers(actor, true))
return; // got a new target
P_SetMobjState (actor, actor->info->spawnstate);
@@ -1105,7 +1106,7 @@
P_SetMobjState (actor, actor->info->missilestate);
- // [STRIFE] Add INCOMBAT flag to disable dialog
+ // [STRIFE] Add NODIALOG flag to disable dialog
actor->flags |= (MF_NODIALOG|MF_JUSTATTACKED);
return;
}
@@ -1117,8 +1118,8 @@
&& !actor->threshold
&& !P_CheckSight (actor, actor->target) )
{
- if (P_LookForPlayers(actor,true))
- return; // got a new target
+ if (P_LookForPlayers(actor, true))
+ return; // got a new target
}
// chase towards player
@@ -1153,7 +1154,7 @@
// haleyjd 09/05/10: Handling for visibility-modifying flags.
//
void A_FaceTarget (mobj_t* actor)
-{
+{
if (!actor->target)
return;
@@ -1995,7 +1996,6 @@
actor->flags |= MF_SHADOW;
if(actor->spawnpoint.options & MTF_MVIS)
actor->flags |= MF_MVIS;
-
}
//
@@ -2307,11 +2307,11 @@
// A_Fall
//
// [STRIFE]
-// * Set INCOMBAT, and clear NOGRAVITY and SHADOW
+// * Set NODIALOG, and clear NOGRAVITY and SHADOW
//
void A_Fall (mobj_t *actor)
{
- // villsa [STRIFE] set incombat flag to stop dialog
+ // villsa [STRIFE] set NODIALOG flag to stop dialog
actor->flags |= MF_NODIALOG;
// actor is on ground, it can be walked over
@@ -2697,7 +2697,7 @@
// give quest and display message to players
for(i = 0; i < MAXPLAYERS; i++)
{
- quest = 1 << ((actor->info->speed) - 1);
+ quest = 1 << (actor->info->speed - 1);
players[i].message = pmsgbuffer;
players[i].questflags |= quest;
}
@@ -3002,7 +3002,7 @@
}
else
{
- // So much for prognostication.
+ // So much for prognostication!
GiveVoiceObjective("VOC87", "LOG87", 0);
}
junk.tag = 222; // Open the exit door again;
@@ -3051,7 +3051,9 @@
//
// A_AcolyteSpecial
+//
// villsa [STRIFE] - new codepointer
+// Awards quest #7 when all the Blue Acolytes are killed in Tarnhill
//
void A_AcolyteSpecial(mobj_t* actor)
{
@@ -3063,7 +3065,7 @@
for(i = 0; i < MAXPLAYERS; i++)
{
- if(playeringame[i] && &players[i].health > 0)
+ if(playeringame[i] && players[i].health > 0)
break;
}
@@ -3076,20 +3078,18 @@
{
mobj_t *mo = (mobj_t *)th;
+ // Found a living MT_GUARD8?
if(mo != actor && mo->type == actor->type && mo->health > 0)
return;
-
- if(mo->type != MT_GUARD8)
- continue; // not MT_GUARD8
-
- // give quest token #7 to all players
- for(i = 0; i < MAXPLAYERS; i++)
- P_GiveItemToPlayer(&players[i], SPR_TOKN, MT_TOKEN_QUEST7);
-
- // play voice, give objective
- GiveVoiceObjective("VOC14", "LOG14", 0);
}
}
+
+ // All MT_GUARD8 are dead, give quest token #7 to all players
+ for(i = 0; i < MAXPLAYERS; i++)
+ P_GiveItemToPlayer(&players[i], SPR_TOKN, MT_TOKEN_QUEST7);
+
+ // play voice, give objective
+ GiveVoiceObjective("VOC14", "LOG14", 0);
}
//
--- a/src/strife/p_inter.c
+++ b/src/strife/p_inter.c
@@ -723,7 +723,7 @@
{
// [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
+ // the player has received a specific quest token
if(special->info->speed != 8 || !(player->questflags & QF_QUEST6))
player->questflags |= 1 << (special->info->speed - 1);
}
--- a/src/strife/p_switch.c
+++ b/src/strife/p_switch.c
@@ -324,7 +324,7 @@
if(useAgain)
P_StartButton(line, middle,switchlist[i],BUTTONTIME);
- // villsa [STRIFE]: Mines Converter hack
+ // villsa [STRIFE]: Mines Transmitter hack
if(sound == sfx_firxpl)
{
breakglass = true;