- Prefixed all names of CQ decorations with Chex after seeing some conflicts

with PWADs.
- Removed Chex Quest actors that were just unaltered duplicates of Doom's.
- Added detection for Chex Quest 3 IWAD.
- Cleaned up M_QuitGame because the code was almost incomprehensible and I
  wanted to add CQ3's new quit messages.
- Added Chex Quest obituaries and a few other messages from CQ3.
- Fixed: drawbar improperly clipped images when not in the top left quadrant.



SVN r1219 (trunk)
This commit is contained in:
Christoph Oelckers 2008-09-13 19:19:53 +00:00
parent 90e3bef2ab
commit 2c74e287a9
13 changed files with 226 additions and 117 deletions

View file

@ -1,4 +1,12 @@
September 13, 2008 (Changes by Graf Zahl)
- Prefixed all names of CQ decorations with Chex after seeing some conflicts
with PWADs.
- Removed Chex Quest actors that were just unaltered duplicates of Doom's.
- Added detection for Chex Quest 3 IWAD.
- Cleaned up M_QuitGame because the code was almost incomprehensible and I
wanted to add CQ3's new quit messages.
- Added Chex Quest obituaries and a few other messages from CQ3.
- Fixed: drawbar improperly clipped images when not in the top left quadrant.
- Fixed: Crouching no longer worked due to a bug introduced by the
player input code.

View file

@ -148,6 +148,7 @@ extern gameinfo_t StrifeGameInfo;
extern gameinfo_t StrifeTeaserGameInfo;
extern gameinfo_t StrifeTeaser2GameInfo;
extern gameinfo_t ChexGameInfo;
extern gameinfo_t Chex3GameInfo;
extern gameinfo_t PlutoniaGameInfo;
extern gameinfo_t TNTGameInfo;
@ -234,6 +235,7 @@ const IWADInfo IWADInfos[NUM_IWAD_TYPES] =
{ "Freedoom \"Demo\"", "Freedoom1",MAKERGB(50,84,67), MAKERGB(198,220,209) },
{ "FreeDM", "FreeDM", MAKERGB(50,84,67), MAKERGB(198,220,209) },
{ "Chex(R) Quest", "Chex", MAKERGB(255,255,0), MAKERGB(0,192,0) },
{ "Chex(R) Quest 3", "Chex3", MAKERGB(255,255,0), MAKERGB(0,192,0) },
};
// PRIVATE DATA DEFINITIONS ------------------------------------------------
@ -263,6 +265,7 @@ static const char *IWADNames[] =
"freedoom1.wad",
"freedm.wad",
"chex.wad",
"chex3.wad",
#ifdef unix
"DOOM2.WAD", // Also look for all-uppercase names
"PLUTONIA.WAD",
@ -281,6 +284,7 @@ static const char *IWADNames[] =
"FREEDOOM1.WAD",
"FREEDM.WAD",
"CHEX.WAD",
"CHEX3.WAD",
#endif
NULL
};
@ -1360,6 +1364,7 @@ static void SetIWAD (const char *iwadpath, EIWADType type)
{ shareware, &SharewareGameInfo, doom }, // FreeDoom1
{ commercial, &CommercialGameInfo, doom2 }, // FreeDM
{ registered, &ChexGameInfo, doom }, // Chex Quest
{ registered, &Chex3GameInfo, doom }, // Chex Quest 3
};
D_AddFile (iwadpath);
@ -1406,6 +1411,9 @@ static EIWADType ScanIWAD (const char *iwad)
{ 'F','R','E','E','D','O','O','M' },
"W94_1",
{ 'P','O','S','S','H','0','M','0' },
"CYCLA1",
"FLMBA1",
"MAPINFO",
"E2M1","E2M2","E2M3","E2M4","E2M5","E2M6","E2M7","E2M8","E2M9",
"E3M1","E3M2","E3M3","E3M4","E3M5","E3M6","E3M7","E3M8","E3M9",
"DPHOOF","BFGGA0","HEADA1","CYBRA1",
@ -1430,6 +1438,9 @@ static EIWADType ScanIWAD (const char *iwad)
Check_FreeDoom,
Check_W94_1,
Check_POSSH0M0,
Check_Cycla1,
Check_Flmba1,
Check_Mapinfo,
Check_e2m1
};
int lumpsfound[NUM_CHECKLUMPS];
@ -1543,6 +1554,15 @@ static EIWADType ScanIWAD (const char *iwad)
}
}
}
else if (lumpsfound[Check_Cycla1] && lumpsfound[Check_Flmba1])
{
if (!lumpsfound[Check_Mapinfo])
{
// The original release won't work without its hacked custom EXE.
I_FatalError("Found an incompatible version of Chex Quest 3");
}
return IWAD_ChexQuest3;
}
else
{
for (i = Check_e2m1; i < NUM_CHECKLUMPS; i++)

View file

@ -75,6 +75,7 @@ enum EIWADType
IWAD_FreeDoom1,
IWAD_FreeDM,
IWAD_ChexQuest,
IWAD_ChexQuest3,
NUM_IWAD_TYPES
};

View file

@ -63,6 +63,7 @@ static FRandom pr_chainwiggle; //use the same method of chain wiggling as hereti
EXTERN_CVAR(Int, fraglimit)
EXTERN_CVAR(Int, screenblocks)
EXTERN_CVAR(Bool, vid_fps)
EXTERN_CVAR(Bool, hud_scale)
enum
{
@ -989,6 +990,27 @@ void DSBarInfo::doCommands(SBarInfoBlock &block, int xOffset, int yOffset, int a
}
cr = cx + cw;
}
// Fix the clipping for fullscreenoffsets.
if(block.fullScreenOffsets && y < 0)
{
cy = hud_scale ? SCREENHEIGHT + (cy*CleanYfac) : SCREENHEIGHT + cy;
cb = hud_scale ? SCREENHEIGHT + (cb*CleanYfac) : SCREENHEIGHT + cb;
}
else if(block.fullScreenOffsets && hud_scale)
{
cy *= CleanYfac;
cb *= CleanYfac;
}
if(block.fullScreenOffsets && x < 0)
{
cx = hud_scale ? SCREENWIDTH + (cx*CleanXfac) : SCREENWIDTH + cx;
cr = hud_scale ? SCREENWIDTH + (cr*CleanXfac) : SCREENWIDTH + cr;
}
else if(block.fullScreenOffsets && hud_scale)
{
cx *= CleanXfac;
cr *= CleanXfac;
}
// Draw background
if(cmd.special3 != 0)

View file

@ -294,6 +294,38 @@ gameinfo_t ChexGameInfo =
MAKERGB(95,175,87),
};
gameinfo_t Chex3GameInfo =
{
GI_CHEX_QUEST,
"TITLEPIC",
"ENDPIC",
"VICTORY2",
"D_INTRO",
5,
0,
200/35,
"misc/chat2",
"D_VICTOR",
"ENDPIC01",
"CREDIT",
"CREDIT",
"ENDPIC",
{ { "HELP1", "CREDIT" } },
"menu/quit1",
2,
"FLOOR7_2",
&DoomBorder,
0,
GAME_Chex,
100,
"F_SKY1",
24*FRACUNIT,
"xlat/doom.txt",
{ "mapinfo/chex.txt", NULL },
MAKERGB(63,125,57),
MAKERGB(95,175,87),
};
gameinfo_t RetailGameInfo =
{
GI_MENUHACK_RETAIL,

View file

@ -43,9 +43,9 @@
extern FStringTable GStrings;
// QuitGame messages
#define NUM_QUITDOOMMESSAGES 15
#define NUM_QUITDOOMMESSAGES 14
#define NUM_QUITSTRIFEMESSAGES 8
#define NUM_QUITCHEXMESSAGES 2
#define NUM_QUITCHEXMESSAGES 7
extern const char *endmsg[];

View file

@ -1995,21 +1995,27 @@ void M_QuitResponse(int ch)
void M_QuitGame (int choice)
{
// We pick index 0 which is language sensitive,
// or one at random, between 1 and maximum number.
if (gameinfo.gametype & (GAME_DoomStrifeChex))
{
int quitmsg = 0;
if (gameinfo.gametype == GAME_Doom)
quitmsg = gametic % NUM_QUITDOOMMESSAGES;
else if (gameinfo.gametype == GAME_Strife)
quitmsg = gametic % NUM_QUITSTRIFEMESSAGES - 1;
else //Chex quest has 2 messages but one is more likely to show
quitmsg = (gametic % NUM_QUITCHEXMESSAGES + 6) > NUM_QUITCHEXMESSAGES ? NUM_QUITCHEXMESSAGES - 1 : (gametic % NUM_QUITCHEXMESSAGES + 6);
if (quitmsg != 0 || gameinfo.gametype == GAME_Strife || gameinfo.gametype == GAME_Chex)
{
EndString.Format("QUITMSG%d", quitmsg + (gameinfo.gametype == GAME_Doom ? 0 : (gameinfo.gametype == GAME_Chex ? NUM_QUITDOOMMESSAGES + NUM_QUITSTRIFEMESSAGES : NUM_QUITDOOMMESSAGES + 1)));
quitmsg = gametic % (NUM_QUITDOOMMESSAGES + 1);
}
else if (gameinfo.gametype == GAME_Strife)
{
quitmsg = gametic % (NUM_QUITSTRIFEMESSAGES + 1);
if (quitmsg != 0) quitmsg += NUM_QUITDOOMMESSAGES;
}
else
{
quitmsg = gametic % (NUM_QUITCHEXMESSAGES + 1);
if (quitmsg != 0) quitmsg += NUM_QUITDOOMMESSAGES + NUM_QUITSTRIFEMESSAGES;
}
if (quitmsg != 0)
{
EndString.Format("QUITMSG%d", quitmsg);
EndString.Format("%s\n\n%s", GStrings(EndString), GStrings("DOSY"));
}
else

View file

@ -2,48 +2,33 @@
// Civilians ------------------------------------------------------------------
actor Civilian1 : GreenTorch 45
actor ChexCivilian1 : GreenTorch 45
{
game Chex
height 54
}
actor Civilian2 : ShortGreenTorch 56
actor ChexCivilian2 : ShortGreenTorch 56
{
game Chex
height 54
}
actor Civilian3 : ShortRedTorch 57
actor ChexCivilian3 : ShortRedTorch 57
{
game Chex
height 48
}
actor DeadChexWarrior : DeadMarine 15
{
game Chex
}
actor DeadChexWarrior2 : GibbedMarine 10
{
game Chex
}
actor DeadChexWarrior3 : GibbedMarineExtra 12
{
game Chex
}
// Landing Zone ---------------------------------------------------------------
actor LandingLight : Column 2028
actor ChexLandingLight : Column 2028
{
game Chex
height 35
}
actor Spaceship : TechPillar 48
actor ChexSpaceship : TechPillar 48
{
game Chex
height 52
@ -51,61 +36,37 @@ actor Spaceship : TechPillar 48
// Trees and Plants -----------------------------------------------------------
actor AppleTree : Stalagtite 47
actor ChexAppleTree : Stalagtite 47
{
game Chex
height 92
}
actor BananaTree : BigTree 54
actor ChexBananaTree : BigTree 54
{
game Chex
height 108
}
actor HangingFlowerPot : Meat2 50
{
game Chex
}
actor HangingFlowerPot2 : Meat3 51
{
game Chex
}
actor HangingFlowerPotNonSolid : HangingFlowerPot 59
{
game Chex
-SOLID
radius 20
}
actor HangingFlowerPot2NonSolid : HangingFlowerPot2 61
{
game Chex
-SOLID
radius 20
}
actor OrangeTree : TorchTree 43
actor ChexOrangeTree : TorchTree 43
{
game Chex
height 92
}
actor SubmergedPlant : ShortGreenColumn 31
actor ChexSubmergedPlant : ShortGreenColumn 31
{
game Chex
height 42
}
actor TallFlower : HeadsOnAStick 28
actor ChexTallFlower : HeadsOnAStick 28
{
game Chex
height 25
}
actor TallFlower2 : DeadStick 25
actor ChexTallFlower2 : DeadStick 25
{
game Chex
height 25
@ -113,92 +74,66 @@ actor TallFlower2 : DeadStick 25
// Slime Fountain -------------------------------------------------------------
actor SlimeFountain : BlueTorch 44
actor ChexSlimeFountain : BlueTorch 44
{
game Chex
height 48
States
{
Spawn:
TBLU ABCD 4
Loop
}
}
// Cavern Decorations ---------------------------------------------------------
actor CavernBat : BloodyTwitch 49
{
game Chex
height 52
}
actor CavernBatNonSolid : CavernBat 63
{
game Chex
-SOLID
radius 20
}
actor CavernColumn : TallRedColumn 32
actor ChexCavernColumn : TallRedColumn 32
{
game Chex
height 128
}
actor CavernStalactite : Meat5 53
{
game Chex
height 48
}
actor CavernStalagmite : TallGreenColumn 30
actor ChexCavernStalagmite : TallGreenColumn 30
{
game Chex
height 60
}
actor NonSolidCavernStalactite : CavernStalactite 62
{
game Chex
-SOLID
radius 20
}
// Misc. Props ----------------------------------------------------------------
actor ChemicalBurner : EvilEye 41
actor ChexChemicalBurner : EvilEye 41
{
game Chex
height 25
}
actor ChemicalFlask : Candlestick 34
actor ChexChemicalFlask : Candlestick 34
{
game Chex
renderstyle translucent
alpha 0.75
}
// Who's idea was it to put an invisible thing on E1M4?
actor DeadCycloptisCommonus : DeadDemon 21
{
game Chex
}
actor FlagOnPole : SkullColumn 37
actor ChexFlagOnPole : SkullColumn 37
{
game Chex
height 128
}
actor GasTank : Candelabra 35
actor ChexGasTank : Candelabra 35
{
game Chex
height 36
}
actor LightColumn : ShortBlueTorch 55
actor ChexLightColumn : ShortBlueTorch 55
{
game Chex
height 86
}
actor MineCart : ShortRedColumn 33
actor ChexMineCart : ShortRedColumn 33
{
game Chex
height 30

View file

@ -53,6 +53,7 @@ actor SuperChexArmor : BlueArmor 2019
actor ComputerAreaMap : Allmap 2026
{
game Chex
inventory.pickupmessage "$GOTCHEXMAP"
}
actor SlimeProofSuit : RadSuit 2025

View file

@ -9,6 +9,7 @@ actor FlemoidusCommonus : ZombieMan 3004
{
Game Chex
DropItem ""
Obituary "$OB_COMMONUS"
States
{
Missile:
@ -28,6 +29,7 @@ actor FlemoidusBipedicus : ShotgunGuy 9
{
Game Chex
DropItem ""
Obituary "$OB_BIPEDICUS"
States
{
Missile:
@ -46,6 +48,8 @@ actor FlemoidusBipedicus : ShotgunGuy 9
actor ArmoredFlemoidusBipedicus : DoomImp 3001
{
Game Chex
Obituary "$OB_BIPEDICUS2"
HitObituary "$OB_BIPEDICUS2"
}
//===========================================================================
@ -57,6 +61,7 @@ actor ArmoredFlemoidusBipedicus : DoomImp 3001
actor FlemoidusCycloptisCommonus : Demon 3002
{
Game Chex
Obituary "$OB_CYCLOPTIS"
}
//===========================================================================
@ -71,6 +76,7 @@ actor Flembrane : BaronOfHell 3003
radius 44
height 100
speed 0
Obituary "$OB_FLEMBRANE"
States
{
Missile:

View file

@ -8,4 +8,5 @@ actor ChexPlayer : DoomPlayer
player.startitem "MiniZorcher"
player.startitem "Bootspoon"
player.startitem "MiniZorchRecharge", 50
player.damagescreencolor "60 b0 58"
}

View file

@ -3,20 +3,20 @@
actor Bootspoon : Fist
{
game Chex
obituary ""
obituary "$OB_MPSPOON"
}
actor SuperBootspork : Chainsaw 2005
{
game Chex
obituary ""
obituary "$OB_MPBOOTSPORK"
Inventory.PickupMessage "$GOTSUPERBOOTSPORK"
}
actor MiniZorcher : Pistol
{
game Chex
obituary ""
obituary "$OP_MPZORCH"
inventory.pickupmessage "$GOTMINIZORCHER"
states
{
@ -28,21 +28,21 @@ actor MiniZorcher : Pistol
actor LargeZorcher : Shotgun 2001
{
game Chex
obituary ""
obituary "$OP_MPZORCH"
inventory.pickupmessage "$GOTLARGEZORCHER"
}
actor SuperLargeZorcher : SuperShotgun 82
{
game Chex
obituary ""
obituary "$OB_MPMEGAZORCH"
inventory.pickupmessage "$GOTSUPERLARGEZORCHER"
}
actor RapidZorcher : Chaingun 2002
{
game Chex
obituary ""
obituary "$OB_MPRAPIDZORCH"
inventory.pickupmessage "$GOTRAPIDZORCHER"
}
@ -51,18 +51,72 @@ actor ZorchPropulsor : RocketLauncher 2003
game Chex
obituary ""
inventory.pickupmessage "$GOTZORCHPROPULSOR"
States
{
Fire:
MISG B 8 A_GunFlash
MISG B 12 A_FireCustomMissile("PropulsorMissile")
MISG B 0 A_ReFire
Goto Ready
}
}
actor PropulsorMissile : Rocket
{
-ROCKETTRAIL
-DEHEXPLOSION
RenderStyle Translucent
Obituary "$OB_MPPROPULSOR"
Alpha 0.75
}
actor PhasingZorcher : PlasmaRifle 2004
{
game Chex
obituary ""
inventory.pickupmessage "$GOTPHASINGZORCHER"
states
{
Fire:
PLSG A 0 A_GunFlash
PLSG A 3 A_FireCustomMissile("PhaseZorchMissile")
PLSG B 20 A_ReFire
Goto Ready
Flash:
PLSF A 0 A_Jump(128, 2)
PLSF A 4 Bright A_Light1
Goto LightDone
PLSF B 4 Bright A_Light1
Goto LightDone
}
}
actor PhaseZorchMissile : PlasmaBall
{
RenderStyle Translucent
Obituary "$OB_MPPHASEZORCH"
Alpha 0.75
}
actor LAZDevice : BFG9000 2006
{
game Chex
obituary ""
inventory.pickupmessage "$GOTLAZDEVICE"
states
{
Fire:
BFGG A 20 A_BFGsound
BFGG B 10 A_GunFlash
BFGG B 10 A_FireCustomMissile("LAZBall")
BFGG B 20 A_ReFire
Goto Ready
}
}
actor LAZBall : BFGBall
{
RenderStyle Translucent
Obituary "$OB_MPLAZ_BOOM"
Alpha 0.75
}

View file

@ -38,8 +38,13 @@ QUITMSG21 = "you can quit...\nbut you can't hide...";
QUITMSG22 = "whaaa, what's the matter?\nmommy says dinnertime?";
// Quit Chex messages
QUITMSG23 = "Don't give up now...do\nyou still wish to quit?";
QUITMSG24 = "please don't leave, we\nneed your help!"; //7 times as likely to show
QUITMSG23 = "Don't quit now, there are still\nflemoids on the loose!";
QUITMSG24 = "Don't give up -- the flemoids will\nget the upper hand!";
QUITMSG25 = "Don't leave now.\nWe need your help!";
QUITMSG26 = "I hope you're just taking a\nbreak for Chex(R) party mix.";
QUITMSG27 = "Don't quit now!\nWe need your help!";
QUITMSG28 = "Don't abandon the\nIntergalactic Federation of Cereals!";
QUITMSG29 = "The real Chex(R) Warrior\nwouldn't give up so fast!";
LOADNET = "you can't do load while in a net game!\n\npress a key.";
QLOADNET = "you can't quickload during a netgame!\n\npress a key.";
@ -685,8 +690,6 @@ OB_TEMPLAR = "%o was vaporized by a Templar.";
OB_REAVERHIT = "%o was sliced open by a Reaver.";
OB_REAVER = "%o was shot down by a Reaver.";
OB_MPFIST = "%o chewed on %k's fist.";
OB_MPCHAINSAW = "%o was mowed over by %k's chainsaw.";
OB_MPPISTOL = "%o was tickled by %k's pea shooter.";
@ -1351,9 +1354,11 @@ GOTCBLUEKEY = "Picked up a blue key.";
GOTCYELLOWKEY = "Picked up a yellow key.";
GOTCREDKEY = "Picked up a red key.";
GOTFRUIT = "Picked up a bowl of fruit.";
GOTVEGETABLESNEED = "Picked up some needed vegetables!";
GOTVEGETABLESNEED = "Vegetables are REALLY good for you!";
GOTVEGETABLES = "Picked up a bowl of vegetables.";
GOTSLIMESUIT = "Slimeproof Suit";
GOTSLIMESUIT = "Found a Slime-Proof Suit";
GOTCHEXMAP = "Found a Computer Area Map";
GOTZORCHRECHARGE = "Picked up a mini zorch recharge.";
GOTMINIZORCHPACK = "Picked up a mini zorch pack.";
GOTPROPULSORRECHARGE = "Picked up a zorch propulsor recharge.";
@ -1363,13 +1368,14 @@ GOTPHASINGZORCHERPACK = "Picked up a phasing zorcher pack.";
GOTLARGEZORCHERRECHARGE = "Picked up a large zorcher recharge.";
GOTLARGEZORCHERPACK = "Picked up a large zorcher pack.";
GOTZORCHPACK = "Picked up a Zorchpak!";
GOTLAZDEVICE = "You got the LAZ Device!";
GOTLAZDEVICE = "You got the LAZ Device! Woot!";
GOTRAPIDZORCHER = "You got the Rapid Zorcher!";
GOTSUPERBOOTSPORK = "You got the Super Bootspork!";
GOTZORCHPROPULSOR = "You got the Zorch Propulsor!";
GOTPHASINGZORCHER = "You got the Phasing Zorcher!";
GOTLARGEZORCHER = "You got the Large Zorcher!";
GOTSUPERLARGEZORCHER = "You got the Super Large Zorcher!";
GOTSUPERLARGEZORCHER = "You got the Mega Zorcher!";
GOTMINIZORCHER = "Picked up a Mini Zorcher.";
STSTR_CDQDON = "Invincible Mode ON";
@ -1377,3 +1383,20 @@ STSTR_CDQDOFF = "Invincible Mode OFF";
STSTR_CFAADDED = "Zorch Added";
STSTR_CKFAADDED = "Super Zorch Added";
STSTR_CCHOPPERS = "... Eat Chex(R)!";
OB_COMMONUS = "%o was slimed by a flemoid.";
OB_BIPEDICUS = "%o was slimed by a bipedicus.";
OB_BIPEDICUS2 = "%o was slimed by an armored bipedicus.";
OB_CYCLOPTIS = "%o was slimed by a cycloptis.";
OB_FLEMBRANE = "%o was defeated by the Flembrane.";
OB_MPSPOON = "%o was spoon fed by %k.";
OB_MPBOOTSPORK = "%o was thouroughly mixed with %k's bootspork.";
OB_MPZORCH = "%o was zorched by %k.";
OB_MPMEGAZORCH = "%o was hit by %k's mega-zorcher.";
OB_MPRAPIDZORCH = "%o was rapid zorched by %k.";
OB_MPPROPULSOR = "%o was zorched by %k's propulsor.";
OB_MPP_SPLASH = "%o was hit by %k's propulsor.";
OB_MPPHASEZORCH = "%o was phase zorched by %k.";
OB_MPLAZ_BOOM = "%o fell prey to %k's LAZ device.";
OB_MPLAZ_SPLASH = "%o was lazzed by %k.";