SW: Implement Darts option, including bloody frames

git-svn-id: https://svn.eduke32.com/eduke32@8338 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/sw/src/menus.cpp
#	source/sw/src/panel.cpp
#	source/sw/src/sprite.cpp
#	source/sw/src/swconfig.cpp
This commit is contained in:
hendricks266 2019-11-30 06:10:33 +00:00 committed by Christoph Oelckers
parent 69c01587c7
commit 8d2159ab70
9 changed files with 18 additions and 11 deletions

View File

@ -765,7 +765,7 @@ analyzesprites(int viewx, int viewy, int viewz, SWBOOL mirror)
//#define DART_REPEAT 6 //#define DART_REPEAT 6
//#define DART_PIC 2233 //#define DART_PIC 2233
if (useDarts) if (gs.Darts)
if (tu->ID == 1793 || tsp->picnum == 1793) if (tu->ID == 1793 || tsp->picnum == 1793)
{ {
tsp->picnum = 2519; tsp->picnum = 2519;
@ -777,7 +777,7 @@ analyzesprites(int viewx, int viewy, int viewz, SWBOOL mirror)
#define DART_REPEAT 16 #define DART_REPEAT 16
if (tu->ID == STAR1) if (tu->ID == STAR1)
{ {
if (useDarts) if (gs.Darts)
{ {
tsp->picnum = DART_PIC; tsp->picnum = DART_PIC;
tsp->ang = NORM_ANGLE(tsp->ang - 512 - 24); tsp->ang = NORM_ANGLE(tsp->ang - 512 - 24);
@ -841,7 +841,7 @@ analyzesprites(int viewx, int viewy, int viewz, SWBOOL mirror)
} }
} }
if (useDarts) if (gs.Darts)
if (tsp->statnum == STAT_STAR_QUEUE) if (tsp->statnum == STAT_STAR_QUEUE)
{ {
tsp->picnum = DART_PIC; tsp->picnum = DART_PIC;

View File

@ -208,6 +208,7 @@ const GAME_SET gs_defaults =
0, // Color 0, // Color
TRUE, // nuke TRUE, // nuke
"Track??", // waveform track name "Track??", // waveform track name
FALSE,
}; };
GAME_SET gs; GAME_SET gs;
@ -3014,7 +3015,7 @@ Nuke -> 0=Off 1=On
commit -map grenade -autonet 0,0,1,1,1,0,3,2,1,1 -name frank commit -map grenade -autonet 0,0,1,1,1,0,3,2,1,1 -name frank
#endif #endif
char isShareware = FALSE, useDarts = FALSE; char isShareware = FALSE;
int DetectShareware(void) int DetectShareware(void)
{ {

View File

@ -50,7 +50,7 @@ Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms
BEGIN_SW_NS BEGIN_SW_NS
//#define SW_SHAREWARE 1 // This determines whether game is shareware compile or not! //#define SW_SHAREWARE 1 // This determines whether game is shareware compile or not!
extern char isShareware, useDarts; extern char isShareware;
#define SW_SHAREWARE (isShareware) #define SW_SHAREWARE (isShareware)
// Turn warning off for unreferenced variables. // Turn warning off for unreferenced variables.

View File

@ -397,6 +397,7 @@ MenuItem options_i[] =
{DefButton(btn_auto_aim, 0, "Auto-Aiming"), OPT_XS, OPT_LINE(9), 1, m_defshade, 0, NULL, NULL, NULL}, {DefButton(btn_auto_aim, 0, "Auto-Aiming"), OPT_XS, OPT_LINE(9), 1, m_defshade, 0, NULL, NULL, NULL},
{DefButton(btn_voxels, 0, "Voxel Sprites"), OPT_XS, OPT_LINE(10), 1, m_defshade, 0, NULL, NULL, NULL}, {DefButton(btn_voxels, 0, "Voxel Sprites"), OPT_XS, OPT_LINE(10), 1, m_defshade, 0, NULL, NULL, NULL},
{DefButton(btn_stats, 0, "Level Stats"), OPT_XS, OPT_LINE(11), 1, m_defshade, 0, NULL, MNU_StatCheck, NULL}, {DefButton(btn_stats, 0, "Level Stats"), OPT_XS, OPT_LINE(11), 1, m_defshade, 0, NULL, MNU_StatCheck, NULL},
{DefButton(btn_darts, 0, "Use Darts"), OPT_XS, OPT_LINE(12), 1, m_defshade, 0, NULL, NULL, NULL},
{DefNone} {DefNone}
}; };
@ -1864,6 +1865,7 @@ MNU_InitMenus(void)
buttonsettings[btn_playcd] = true;// gs.PlayCD; buttonsettings[btn_playcd] = true;// gs.PlayCD;
buttonsettings[btn_flipstereo] = snd_reversestereo; buttonsettings[btn_flipstereo] = snd_reversestereo;
buttonsettings[btn_stats] = hud_stats; buttonsettings[btn_stats] = hud_stats;
buttonsettings[btn_darts] = gs.Darts;
slidersettings[sldr_gametype] = gs.NetGameType; slidersettings[sldr_gametype] = gs.NetGameType;
slidersettings[sldr_netlevel] = gs.NetLevel; slidersettings[sldr_netlevel] = gs.NetLevel;
@ -2920,6 +2922,9 @@ void MNU_DoButton(MenuItem_p item, SWBOOL draw)
case btn_stats: case btn_stats:
hud_stats = state = buttonsettings[item->button]; hud_stats = state = buttonsettings[item->button];
break; break;
case btn_darts:
gs.Darts = state = buttonsettings[item->button];
break;
case btn_markers: case btn_markers:
gs.NetSpawnMarkers = state = buttonsettings[item->button]; gs.NetSpawnMarkers = state = buttonsettings[item->button];
break; break;

View File

@ -212,6 +212,7 @@ typedef enum
btn_markers, btn_teamplay, btn_friendlyfire,btn_parental,btn_nuke, btn_markers, btn_teamplay, btn_friendlyfire,btn_parental,btn_nuke,
btn_voxels, btn_stats, btn_playcd, btn_voxels, btn_stats, btn_playcd,
btn_videofs, btn_videofs,
btn_darts,
btn_max btn_max
} BTNType; } BTNType;

View File

@ -1822,7 +1822,7 @@ InitWeaponStar(PLAYERp pp)
PlaySound(DIGI_PULL, &pp->posx, &pp->posy, &pp->posz, v3df_follow|v3df_dontpan); PlaySound(DIGI_PULL, &pp->posx, &pp->posy, &pp->posz, v3df_follow|v3df_dontpan);
if (STD_RANDOM_RANGE(1000) > 900 && pp == Player+myconnectindex) if (STD_RANDOM_RANGE(1000) > 900 && pp == Player+myconnectindex)
{ {
if (!useDarts) if (!gs.Darts)
PlayerSound(DIGI_ILIKESHURIKEN,&pp->posx,&pp->posy,&pp->posz,v3df_follow|v3df_dontpan,pp); PlayerSound(DIGI_ILIKESHURIKEN,&pp->posx,&pp->posy,&pp->posz,v3df_follow|v3df_dontpan,pp);
} }
@ -7389,7 +7389,7 @@ pDisplaySprites(PLAYERp pp)
picnum = psp->picndx; picnum = psp->picndx;
// UK panzies have to have darts instead of shurikens. // UK panzies have to have darts instead of shurikens.
if (useDarts) if (gs.Darts)
switch (picnum) switch (picnum)
{ {
case STAR_REST: case STAR_REST:
@ -7453,7 +7453,7 @@ pDisplaySprites(PLAYERp pp)
case STAR_REST: case STAR_REST:
case 2510: case 2510:
if (!useDarts) if (!gs.Darts)
picnum = 2138; picnum = 2138;
else else
picnum = 2518; // Bloody Dart Hand picnum = 2518; // Bloody Dart Hand

View File

@ -46,6 +46,7 @@ typedef struct
SWBOOL NetNuke; SWBOOL NetNuke;
//SWBOOL PlayCD; // Not implemented and no idea how to support it without the music assets. //SWBOOL PlayCD; // Not implemented and no idea how to support it without the music assets.
char WaveformTrackName[MAXWAVEFORMTRACKLENGTH]; char WaveformTrackName[MAXWAVEFORMTRACKLENGTH];
SWBOOL Darts;
} GAME_SET, *GAME_SETp; } GAME_SET, *GAME_SETp;
extern const GAME_SET gs_defaults; extern const GAME_SET gs_defaults;

View File

@ -5959,8 +5959,7 @@ KeyMain:
if (pp->WpnAmmo[WPN_STAR] >= DamageData[WPN_STAR].max_ammo) if (pp->WpnAmmo[WPN_STAR] >= DamageData[WPN_STAR].max_ammo)
break; break;
//if (useDarts) sprintf(ds,"Darts"); sprintf(ds, gs.Darts ? "Darts" : "Shurikens");
//else sprintf(ds,"Shurikens");
PutStringInfo(Player+pnum, DamageData[WPN_STAR].weapon_name); PutStringInfo(Player+pnum, DamageData[WPN_STAR].weapon_name);
PlayerUpdateAmmo(pp, WPN_STAR, DamageData[WPN_STAR].weapon_pickup); PlayerUpdateAmmo(pp, WPN_STAR, DamageData[WPN_STAR].weapon_pickup);
SetFadeAmt(pp,ITEMFLASHAMT,ITEMFLASHCLR); // Flash blue on item pickup SetFadeAmt(pp,ITEMFLASHAMT,ITEMFLASHCLR); // Flash blue on item pickup

View File

@ -7492,7 +7492,7 @@ const char *DeathString(short SpriteNum)
case 5011: case 5011:
return "blade"; return "blade";
case STAR1: case STAR1:
if (useDarts) return "dart"; if (gs.Darts) return "dart";
else return "shuriken"; else return "shuriken";
case CROSSBOLT: case CROSSBOLT:
return "crossbow bolt"; return "crossbow bolt";