From 85cf8de0f35877ff9d12228115cc15de8b706120 Mon Sep 17 00:00:00 2001 From: terminx Date: Thu, 23 May 2013 18:28:04 +0000 Subject: [PATCH] Add support for shareware 0.99/1.0/1.1, for shits and giggles. git-svn-id: https://svn.eduke32.com/eduke32@3803 1a8010ca-5511-0410-912e-c29ae57300e0 --- polymer/eduke32/source/actors.c | 2 +- polymer/eduke32/source/common_game.h | 4 + polymer/eduke32/source/game.c | 22 +++-- polymer/eduke32/source/gamedef.c | 133 ++++++++++++++++++++------- polymer/eduke32/source/gamedef.h | 4 + polymer/eduke32/source/gameexec.c | 5 + polymer/eduke32/source/global.c | 9 +- polymer/eduke32/source/global.h | 14 +-- polymer/eduke32/source/grpscan.c | 32 ++++--- polymer/eduke32/source/grpscan.h | 29 +++--- polymer/eduke32/source/menus.c | 6 +- 11 files changed, 179 insertions(+), 81 deletions(-) diff --git a/polymer/eduke32/source/actors.c b/polymer/eduke32/source/actors.c index d4ad0b438..f08cabf2a 100644 --- a/polymer/eduke32/source/actors.c +++ b/polymer/eduke32/source/actors.c @@ -2980,7 +2980,7 @@ ACTOR_STATIC void G_MoveWeapons(void) A_GetZLimits(i); if (s->picnum == RPG && actor[i].picnum != BOSS2 && s->xrepeat >= 10 && - sector[s->sectnum].lotag != ST_2_UNDERWATER) + sector[s->sectnum].lotag != ST_2_UNDERWATER && g_scriptVersion >= 13) { j = A_Spawn(i,SMALLSMOKE); sprite[j].z += (1<<8); diff --git a/polymer/eduke32/source/common_game.h b/polymer/eduke32/source/common_game.h index 31522b388..68cd76cdb 100644 --- a/polymer/eduke32/source/common_game.h +++ b/polymer/eduke32/source/common_game.h @@ -12,6 +12,8 @@ #define GAMEFLAG_NAPALM 0x00000004 #define GAMEFLAG_WW2GI 0x00000008 #define GAMEFLAG_ADDON 0x00000010 +#define GAMEFLAG_SHAREWARE 0x00000020 +#define GAMEFLAG_DUKEBETA 0x00000060 // includes 0x20 since it's a shareware beta extern int32_t g_gameType; @@ -19,6 +21,8 @@ extern int32_t g_gameType; #define NAM (g_gameType & GAMEFLAG_NAM) #define NAPALM (g_gameType & GAMEFLAG_NAPALM) #define WW2GI (g_gameType & GAMEFLAG_WW2GI) +#define SHAREWARE (g_gameType & GAMEFLAG_SHAREWARE) +#define DUKEBETA (g_gameType & GAMEFLAG_DUKEBETA) enum Games_t { GAME_DUKE = 0, diff --git a/polymer/eduke32/source/game.c b/polymer/eduke32/source/game.c index b22565421..37c4471ed 100644 --- a/polymer/eduke32/source/game.c +++ b/polymer/eduke32/source/game.c @@ -2088,7 +2088,7 @@ static void G_DisplayExtraScreens(void) S_StopMusic(); FX_StopAllSounds(); - if (!VOLUMEALL || flags & LOGO_SHAREWARESCREENS) + if (!DUKEBETA && (!VOLUMEALL || flags & LOGO_SHAREWARESCREENS)) { setview(0,0,xdim-1,ydim-1); flushperms(); @@ -5216,7 +5216,7 @@ int32_t A_Spawn(int32_t j, int32_t pn) case LIZTROOPSTAYPUT__STATIC: case LIZTROOPJUSTSIT__STATIC: case LIZTROOP__STATIC: - if (g_scriptVersion == 13) + if (g_scriptVersion != 14) default: sp->extra <<= 1; break; @@ -10657,11 +10657,17 @@ int32_t app_main(int32_t argc, const char **argv) G_CleanupSearchPaths(); - i = kopen4load("DUKESW.BIN",1); // JBF 20030810 - if (i!=-1) - { + if (SHAREWARE) g_Shareware = 1; - kclose(i); + else + { + i = kopen4load("DUKESW.BIN",1); // JBF 20030810 + + if (i != -1) + { + g_Shareware = 1; + kclose(i); + } } // gotta set the proper title after we compile the CONs if this is the full version @@ -11763,7 +11769,7 @@ FRAGBONUS: { for (ii=MapInfo[ud.volume_number*MAXLEVELS+ud.last_level-1].partime/(REALGAMETICSPERSEC*60), ij=1; ii>9; ii/=10, ij++) ; clockpad = max(clockpad,ij); - if (!NAM) + if (!NAM && MapInfo[ud.volume_number*MAXLEVELS+ud.last_level-1].designertime) { for (ii=MapInfo[ud.volume_number*MAXLEVELS+ud.last_level-1].designertime/(REALGAMETICSPERSEC*60), ij=1; ii>9; ii/=10, ij++) ; clockpad = max(clockpad,ij); @@ -11903,7 +11909,7 @@ FRAGBONUS: gametext((320>>2)+71,yy+9,tempbuf,0,2+8+16); yy+=10; - if (!NAM) + if (!NAM && MapInfo[ud.volume_number*MAXLEVELS+ud.last_level-1].designertime) { Bsprintf(tempbuf,"%0*d:%02d",clockpad, (MapInfo[ud.volume_number*MAXLEVELS+ud.last_level-1].designertime/(REALGAMETICSPERSEC*60)), diff --git a/polymer/eduke32/source/gamedef.c b/polymer/eduke32/source/gamedef.c index 1296f9ac3..3f8d772e7 100644 --- a/polymer/eduke32/source/gamedef.c +++ b/polymer/eduke32/source/gamedef.c @@ -91,6 +91,10 @@ static struct { uint32_t keyw; uint32_t date; } g_keywdate[] = { CON_ECHO, 20120304 }, { CON_SHOWVIEWUNBIASED, 20120331 }, { CON_ROTATESPRITEA, 20130324 }, + { CON_SHADETO, 20130522 }, + { CON_ENDOFLEVEL, 20130522 }, + { CON_IFPLAYERSL, 20130522 }, + { CON_ACTIVATE, 20130522 }, }; #endif @@ -578,6 +582,10 @@ const char *keyw[] = "echo", // 362 "showviewunbiased", // 363 "rotatespritea", // 364 + "shadeto", // 365 + "endoflevel", // 366 + "ifplayersl", // 367 + "activate", // 368 "" }; #endif @@ -2081,16 +2089,29 @@ void G_DoGameStartup(const int32_t *params) g_maxPlayerHealth = g_player[0].ps->max_player_health = g_player[0].ps->max_shield_amount = params[j++]; g_startArmorAmount = params[j++]; g_actorRespawnTime = params[j++]; - g_itemRespawnTime = params[j++]; - g_playerFriction = params[j++]; - if (g_scriptVersion == 14) g_spriteGravity = params[j++]; - g_rpgBlastRadius = params[j++]; - g_pipebombBlastRadius = params[j++]; - g_shrinkerBlastRadius = params[j++]; - g_tripbombBlastRadius = params[j++]; - g_morterBlastRadius = params[j++]; - g_bouncemineBlastRadius = params[j++]; - g_seenineBlastRadius = params[j++]; + + if (g_scriptVersion >= 11) + g_itemRespawnTime = params[j++]; + else + g_itemRespawnTime = g_actorRespawnTime; + + if (g_scriptVersion >= 11) + g_playerFriction = params[j++]; + + if (g_scriptVersion == 14) + g_spriteGravity = params[j++]; + + if (g_scriptVersion >= 11) + { + g_rpgBlastRadius = params[j++]; + g_pipebombBlastRadius = params[j++]; + g_shrinkerBlastRadius = params[j++]; + g_tripbombBlastRadius = params[j++]; + g_morterBlastRadius = params[j++]; + g_bouncemineBlastRadius = params[j++]; + g_seenineBlastRadius = params[j++]; + } + g_player[0].ps->max_ammo_amount[PISTOL_WEAPON] = params[j++]; g_player[0].ps->max_ammo_amount[SHOTGUN_WEAPON] = params[j++]; g_player[0].ps->max_ammo_amount[CHAINGUN_WEAPON] = params[j++]; @@ -2099,17 +2120,25 @@ void G_DoGameStartup(const int32_t *params) g_player[0].ps->max_ammo_amount[SHRINKER_WEAPON] = params[j++]; g_player[0].ps->max_ammo_amount[DEVISTATOR_WEAPON] = params[j++]; g_player[0].ps->max_ammo_amount[TRIPBOMB_WEAPON] = params[j++]; - g_player[0].ps->max_ammo_amount[FREEZE_WEAPON] = params[j++]; - if (g_scriptVersion == 14) g_player[0].ps->max_ammo_amount[GROW_WEAPON] = params[j++]; - g_damageCameras = params[j++]; - g_numFreezeBounces = params[j++]; - g_freezerSelfDamage = params[j++]; - if (g_scriptVersion == 14) - { - g_spriteDeleteQueueSize = params[j++]; - g_spriteDeleteQueueSize = clamp(g_spriteDeleteQueueSize, 0, 1024); - g_tripbombLaserMode = params[j++]; + if (g_scriptVersion >= 13) + { + g_player[0].ps->max_ammo_amount[FREEZE_WEAPON] = params[j++]; + + if (g_scriptVersion == 14) + g_player[0].ps->max_ammo_amount[GROW_WEAPON] = params[j++]; + + g_damageCameras = params[j++]; + g_numFreezeBounces = params[j++]; + g_freezerSelfDamage = params[j++]; + + if (g_scriptVersion == 14) + { + g_spriteDeleteQueueSize = params[j++]; + g_spriteDeleteQueueSize = clamp(g_spriteDeleteQueueSize, 0, 1024); + + g_tripbombLaserMode = params[j++]; + } } } @@ -2759,8 +2788,7 @@ static int32_t C_ParseCommand(int32_t loop) while (j>-1) { bitptr[(g_scriptPtr-script)>>3] &= ~(BITPTR_POINTER<<((g_scriptPtr-script)&7)); - *g_scriptPtr = 0; - g_scriptPtr++; + *g_scriptPtr++ = 0; j--; } continue; @@ -3257,6 +3285,7 @@ static int32_t C_ParseCommand(int32_t loop) case CON_CSTAT: case CON_COUNT: case CON_ENDOFGAME: + case CON_ENDOFLEVEL: case CON_SPRITEPAL: case CON_CACTOR: case CON_MONEY: @@ -4361,6 +4390,12 @@ static int32_t C_ParseCommand(int32_t loop) } continue; + case CON_ACTIVATE: + *g_scriptPtr = CON_OPERATEACTIVATORS; + C_GetNextValue(LABEL_DEFINE); + *g_scriptPtr++ = g_iThisActorID; + continue; + case CON_DRAGPOINT: case CON_GETKEYNAME: C_GetManyVars(3); @@ -5061,6 +5096,7 @@ repeatcase: case CON_IFMOVE: case CON_IFP: case CON_IFPINVENTORY: + case CON_IFPLAYERSL: { intptr_t offset; intptr_t lastScriptPtr = (g_scriptPtr-&script[0]-1); @@ -5588,12 +5624,17 @@ repeatcase: textptr += 5; while (*textptr == ' ' || *textptr == '\t') textptr++; - MapInfo[j *MAXLEVELS+k].designertime = - (((*(textptr+0)-'0')*10+(*(textptr+1)-'0'))*REALGAMETICSPERSEC*60)+ - (((*(textptr+3)-'0')*10+(*(textptr+4)-'0'))*REALGAMETICSPERSEC); + // cheap hack, 0.99 doesn't have the 3D Realms time + if (*(textptr+2) == ':') + { + MapInfo[j *MAXLEVELS+k].designertime = + (((*(textptr+0)-'0')*10+(*(textptr+1)-'0'))*REALGAMETICSPERSEC*60)+ + (((*(textptr+3)-'0')*10+(*(textptr+4)-'0'))*REALGAMETICSPERSEC); - textptr += 5; - while (*textptr == ' ' || *textptr == '\t') textptr++; + textptr += 5; + while (*textptr == ' ' || *textptr == '\t') textptr++; + } + else g_scriptVersion = 9; i = 0; @@ -5890,6 +5931,12 @@ repeatcase: if (C_SetScriptSize(j)) return 1; continue; + case CON_SHADETO: + g_scriptPtr--; + C_GetNextValue(LABEL_DEFINE); + g_scriptPtr--; + continue; + case CON_FALL: case CON_TIP: // case 21: @@ -5930,19 +5977,18 @@ repeatcase: g_scriptPtr--; params[j] = *g_scriptPtr; - if (j != 25) continue; + if (j != 12 && j != 21 && j != 25) continue; if (C_GetKeyword() != -1) { - // initprintf("Duke Nukem 3D v1.3D style CON files detected.\n"); + if (j == 12) + g_scriptVersion = 10; + else if (j == 21) + g_scriptVersion = 11; break; } else - { g_scriptVersion = 14; - // initprintf("Duke Nukem 3D v1.4+ style CON files detected.\n"); - } - } /* @@ -6130,6 +6176,23 @@ void C_InitProjectiles(void) extern int32_t g_numObituaries; extern int32_t g_numSelfObituaries; +static char * C_ScriptVersionString(int32_t version) +{ + switch (version) + { + case 9: + return "0.99"; + case 10: + return "1.0"; + case 11: + return "1.1"; + case 13: + return "1.3D"; + default: + return "1.4+"; + } +} + void C_Compile(const char *filenam) { char *mptr; @@ -6315,8 +6378,8 @@ void C_Compile(const char *filenam) C_SetScriptSize(g_scriptPtr-script+8); - initprintf("Script compiled in %dms, %ld*%db, version %s\n", getticks() - startcompiletime, - (unsigned long)(g_scriptPtr-script), (int32_t)sizeof(intptr_t), (g_scriptVersion == 14?"1.4+":"1.3D")); + initprintf("Script compiled in %dms, %ld*%db, language version %s\n", getticks() - startcompiletime, + (unsigned long)(g_scriptPtr-script), (int32_t)sizeof(intptr_t), C_ScriptVersionString(g_scriptVersion)); initprintf("%d/%d labels, %d/%d variables, %d/%d arrays\n", g_numLabels, (int32_t)min((MAXSECTORS * sizeof(sectortype)/sizeof(int32_t)), diff --git a/polymer/eduke32/source/gamedef.h b/polymer/eduke32/source/gamedef.h index cf0d7e038..f07746d58 100644 --- a/polymer/eduke32/source/gamedef.h +++ b/polymer/eduke32/source/gamedef.h @@ -937,6 +937,10 @@ enum ScriptKeywords_t CON_ECHO, // 362 CON_SHOWVIEWUNBIASED, // 363 CON_ROTATESPRITEA, // 364 + CON_SHADETO, // 365 + CON_ENDOFLEVEL, // 366 + CON_IFPLAYERSL, // 367 + CON_ACTIVATE, // 368 CON_END }; #endif diff --git a/polymer/eduke32/source/gameexec.c b/polymer/eduke32/source/gameexec.c index c9d38b01a..84421b199 100644 --- a/polymer/eduke32/source/gameexec.c +++ b/polymer/eduke32/source/gameexec.c @@ -1289,6 +1289,10 @@ skip_check: vm.g_t[4] = *insptr++; continue; + case CON_IFPLAYERSL: + VM_CONDITIONAL(numplayers < *(++insptr)); + continue; + case CON_IFPDISTL: VM_CONDITIONAL(vm.g_x < *(++insptr)); if (vm.g_x > MAXSLEEPDIST && actor[vm.g_i].timetosleep == 0) @@ -1617,6 +1621,7 @@ skip_check: continue; case CON_ENDOFGAME: + case CON_ENDOFLEVEL: insptr++; g_player[vm.g_p].ps->timebeforeexit = *insptr++; g_player[vm.g_p].ps->customexitsound = -1; diff --git a/polymer/eduke32/source/global.c b/polymer/eduke32/source/global.c index 64c7ac2f3..9d90831e9 100644 --- a/polymer/eduke32/source/global.c +++ b/polymer/eduke32/source/global.c @@ -57,6 +57,13 @@ int32_t g_timerTicsPerSecond = TICRATE; int32_t g_actorRespawnTime = 768; int32_t g_itemRespawnTime = 768; +int32_t g_rpgBlastRadius = 1780; +int32_t g_pipebombBlastRadius = 2500; +int32_t g_shrinkerBlastRadius = 650; +int32_t g_tripbombBlastRadius = 3880; +int32_t g_morterBlastRadius = 2500; +int32_t g_bouncemineBlastRadius = 2500; +int32_t g_seenineBlastRadius = 2048; int32_t g_scriptSize = 1048576; @@ -79,7 +86,7 @@ int16_t BlimpSpawnSprites[15] = FREEZEAMMO__STATIC }; -int32_t g_playerFriction = 0xcc00; +int32_t g_playerFriction = 0xCFD0; int32_t g_numFreezeBounces = 3; diff --git a/polymer/eduke32/source/global.h b/polymer/eduke32/source/global.h index c2f4a912a..b0f01ff05 100644 --- a/polymer/eduke32/source/global.h +++ b/polymer/eduke32/source/global.h @@ -126,13 +126,6 @@ G_EXTERN uint32_t everyothertime; G_EXTERN uint32_t g_moveThingsCount; G_EXTERN vec3_t my,omy,myvel; G_EXTERN volatile char g_soundlocks[MAXSOUNDS]; -G_EXTERN int32_t g_rpgBlastRadius; -G_EXTERN int32_t g_pipebombBlastRadius; -G_EXTERN int32_t g_tripbombBlastRadius; -G_EXTERN int32_t g_shrinkerBlastRadius; -G_EXTERN int32_t g_morterBlastRadius; -G_EXTERN int32_t g_bouncemineBlastRadius; -G_EXTERN int32_t g_seenineBlastRadius; G_EXTERN int32_t g_restorePalette; G_EXTERN int32_t g_screenCapture; G_EXTERN int32_t g_noEnemies; @@ -156,6 +149,13 @@ G_EXTERN int16_t BlimpSpawnSprites[15]; G_EXTERN int32_t g_playerFriction; G_EXTERN int32_t g_numFreezeBounces; G_EXTERN int32_t g_lastSaveSlot; +G_EXTERN int32_t g_rpgBlastRadius; +G_EXTERN int32_t g_pipebombBlastRadius; +G_EXTERN int32_t g_tripbombBlastRadius; +G_EXTERN int32_t g_shrinkerBlastRadius; +G_EXTERN int32_t g_morterBlastRadius; +G_EXTERN int32_t g_bouncemineBlastRadius; +G_EXTERN int32_t g_seenineBlastRadius; G_EXTERN char CheatKeys[2]; G_EXTERN char setupfilename[BMAX_PATH]; #endif diff --git a/polymer/eduke32/source/grpscan.c b/polymer/eduke32/source/grpscan.c index 119c9626c..a40b02db3 100644 --- a/polymer/eduke32/source/grpscan.c +++ b/polymer/eduke32/source/grpscan.c @@ -33,21 +33,24 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // custom GRP support for the startup window, file format reflects the structure below #define GAMELISTFILE "games.list" -// name crc size flags dependency scriptname defname +// name crc size flags dependency scriptname defname struct grpfile internalgrpfiles[NUMGRPFILES] = { - { "Duke Nukem 3D", DUKE13_CRC, 26524524, GAMEFLAG_DUKE, 0, NULL, NULL, NULL }, - { "Duke Nukem 3D (South Korean Censored)", DUKEKR_CRC, 26385383, GAMEFLAG_DUKE, 0, NULL, NULL, NULL }, - { "Duke Nukem 3D: Atomic Edition", DUKE15_CRC, 44356548, GAMEFLAG_DUKE, 0, NULL, NULL, NULL }, - { "Duke Nukem 3D: Plutonium Pak", DUKEPP_CRC, 44348015, GAMEFLAG_DUKE, 0, NULL, NULL, NULL }, - { "Duke Nukem 3D Shareware", DUKESW_CRC, 11035779, GAMEFLAG_DUKE, 0, NULL, NULL, NULL }, - { "Duke Nukem 3D Mac Demo", DUKEMD_CRC, 10444391, GAMEFLAG_DUKE, 0, NULL, NULL, NULL }, - { "Duke it out in D.C.", DUKEDC_CRC, 8410183 , GAMEFLAG_DUKE|GAMEFLAG_ADDON, DUKE15_CRC, NULL, NULL, NULL }, - { "Duke Caribbean: Life's a Beach", DUKECB_CRC, 22213819, GAMEFLAG_DUKE|GAMEFLAG_ADDON, DUKE15_CRC, NULL, NULL, NULL }, - { "Duke: Nuclear Winter", DUKENW_CRC, 16169365, GAMEFLAG_DUKE|GAMEFLAG_ADDON, DUKE15_CRC, "nwinter.con", NULL, NULL }, - { "NAM", NAM_CRC, 43448927, GAMEFLAG_NAM, 0, "nam.con", "nam.def", NULL }, - { "NAPALM", NAPALM_CRC, 44365728, GAMEFLAG_NAM|GAMEFLAG_NAPALM, 0, "napalm.con", "nam.def", NULL }, - { "WWII GI", WW2GI_CRC, 77939508, GAMEFLAG_WW2GI|GAMEFLAG_NAM, 0, "ww2gi.con", "ww2gi.def", NULL }, + { "Duke Nukem 3D", DUKE13_CRC, 26524524, GAMEFLAG_DUKE, 0, NULL, NULL, NULL }, + { "Duke Nukem 3D (South Korean Censored)", DUKEKR_CRC, 26385383, GAMEFLAG_DUKE, 0, NULL, NULL, NULL }, + { "Duke Nukem 3D: Atomic Edition", DUKE15_CRC, 44356548, GAMEFLAG_DUKE, 0, NULL, NULL, NULL }, + { "Duke Nukem 3D: Plutonium Pak", DUKEPP_CRC, 44348015, GAMEFLAG_DUKE, 0, NULL, NULL, NULL }, + { "Duke Nukem 3D Shareware 0.99", DUKE099_CRC, 9690241, GAMEFLAG_DUKE|GAMEFLAG_DUKEBETA, 0, NULL, NULL, NULL }, + { "Duke Nukem 3D Shareware 1.0", DUKE10_CRC, 10429258, GAMEFLAG_DUKE|GAMEFLAG_SHAREWARE, 0, NULL, NULL, NULL }, + { "Duke Nukem 3D Shareware 1.1", DUKE11_CRC, 10442980, GAMEFLAG_DUKE|GAMEFLAG_SHAREWARE, 0, NULL, NULL, NULL }, + { "Duke Nukem 3D Shareware 1.3D", DUKESW_CRC, 11035779, GAMEFLAG_DUKE|GAMEFLAG_SHAREWARE, 0, NULL, NULL, NULL }, + { "Duke Nukem 3D Mac Demo", DUKEMD_CRC, 10444391, GAMEFLAG_DUKE|GAMEFLAG_SHAREWARE, 0, NULL, NULL, NULL }, + { "Duke it out in D.C.", DUKEDC_CRC, 8410183 , GAMEFLAG_DUKE|GAMEFLAG_ADDON, DUKE15_CRC, NULL, NULL, NULL }, + { "Duke Caribbean: Life's a Beach", DUKECB_CRC, 22213819, GAMEFLAG_DUKE|GAMEFLAG_ADDON, DUKE15_CRC, NULL, NULL, NULL }, + { "Duke: Nuclear Winter", DUKENW_CRC, 16169365, GAMEFLAG_DUKE|GAMEFLAG_ADDON, DUKE15_CRC, "nwinter.con", NULL, NULL }, + { "NAM", NAM_CRC, 43448927, GAMEFLAG_NAM, 0, "nam.con", "nam.def", NULL }, + { "NAPALM", NAPALM_CRC, 44365728, GAMEFLAG_NAM|GAMEFLAG_NAPALM, 0, "napalm.con", "nam.def", NULL }, + { "WWII GI", WW2GI_CRC, 77939508, GAMEFLAG_WW2GI|GAMEFLAG_NAM, 0, "ww2gi.con", "ww2gi.def", NULL }, }; struct grpfile *foundgrps = NULL; struct grpfile *listgrps = NULL; @@ -454,6 +457,9 @@ int32_t ScanGroups(void) } } + if (igrp->game && !grp->game) + grp->game = igrp->game; + grp=grp->next; } diff --git a/polymer/eduke32/source/grpscan.h b/polymer/eduke32/source/grpscan.h index a48c4d08f..4eb34cdab 100644 --- a/polymer/eduke32/source/grpscan.h +++ b/polymer/eduke32/source/grpscan.h @@ -26,20 +26,23 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #define MAXLISTNAMELEN 32 // List of internally-known GRP files -#define NUMGRPFILES 12 +#define NUMGRPFILES 15 -#define DUKE13_CRC (int32_t)0xBBC9CE44 -#define DUKEKR_CRC (int32_t)0xAA4F6A40 -#define DUKE15_CRC (int32_t)0xFD3DCFF1 -#define DUKEPP_CRC (int32_t)0xF514A6AC -#define DUKESW_CRC (int32_t)0x983AD923 -#define DUKEMD_CRC (int32_t)0xC5F71561 -#define DUKEDC_CRC (int32_t)0xA8CF80DA -#define DUKECB_CRC (int32_t)0x18F01C5B -#define DUKENW_CRC (int32_t)0xF1CAE8E4 -#define NAM_CRC (int32_t)0x75C1F07B -#define NAPALM_CRC (int32_t)0x3DE1589A -#define WW2GI_CRC (int32_t)0x907B82BF +#define DUKE13_CRC (int32_t)0xBBC9CE44 +#define DUKEKR_CRC (int32_t)0xAA4F6A40 +#define DUKE15_CRC (int32_t)0xFD3DCFF1 +#define DUKEPP_CRC (int32_t)0xF514A6AC +#define DUKE099_CRC (int32_t)0x02F18900 +#define DUKE10_CRC (int32_t)0xA28AA589 +#define DUKE11_CRC (int32_t)0x912E1E8D +#define DUKESW_CRC (int32_t)0x983AD923 +#define DUKEMD_CRC (int32_t)0xC5F71561 +#define DUKEDC_CRC (int32_t)0xA8CF80DA +#define DUKECB_CRC (int32_t)0x18F01C5B +#define DUKENW_CRC (int32_t)0xF1CAE8E4 +#define NAM_CRC (int32_t)0x75C1F07B +#define NAPALM_CRC (int32_t)0x3DE1589A +#define WW2GI_CRC (int32_t)0x907B82BF enum addon_t { ADDON_NONE, diff --git a/polymer/eduke32/source/menus.c b/polymer/eduke32/source/menus.c index e21d03cc5..e99017685 100644 --- a/polymer/eduke32/source/menus.c +++ b/polymer/eduke32/source/menus.c @@ -926,7 +926,7 @@ void M_DisplayMenus(void) mgametext(160,41-8,"You are playing the shareware",0,2+8+16); mgametext(160,50-8,"version of Duke Nukem 3D. While",0,2+8+16); mgametext(160,59-8,"this version is really cool, you",0,2+8+16); - mgametext(160,68-8,"are missing over 75%% of the total",0,2+8+16); + mgametext(160,68-8,"are missing over 75% of the total",0,2+8+16); mgametext(160,77-8,"game, along with other great extras",0,2+8+16); mgametext(160,86-8,"and games, which you'll get when",0,2+8+16); mgametext(160,95-8,"you order the complete version and",0,2+8+16); @@ -2019,7 +2019,7 @@ void M_DisplayMenus(void) M_DrawTopBar("About EDuke32"); cheat_for_port_credits: - if (g_scriptVersion == 13) l = (-2); + if (g_scriptVersion != 14) l = (-2); mgametext(160,38-l,"Programming and Project Management",0,2+8+16); p = "Richard \"TerminX\" Gobeille"; minitext(161-(Bstrlen(p)<<1), 39+10-l, p, 4, 10+16+128); @@ -2060,7 +2060,7 @@ cheat_for_port_credits: M_DrawTopBar("About EDuke32"); cheat_for_port_credits2: - if (g_scriptVersion == 13) l = (-2); + if (g_scriptVersion != 14) l = (-2); mgametext(160,38-l,"License and Other Contributors",0,2+8+16); { const char *header[] =