- removed unused code. (MDA screen hack - huh???)

- Shadow Warrior updates from SWP.
This commit is contained in:
Christoph Oelckers 2019-11-17 18:02:17 +01:00
parent dc60c7f72e
commit 557bd201fb
37 changed files with 657 additions and 1012 deletions

View file

@ -64,7 +64,6 @@ set( PCH_SOURCES
src/lava.cpp
src/light.cpp
src/mclip.cpp
src/mdastr.cpp
src/menus.cpp
src/miscactr.cpp
src/morph.cpp
@ -102,6 +101,7 @@ set( PCH_SOURCES
src/weapon.cpp
src/zilla.cpp
src/zombie.cpp
src/swcvar.cpp
)

View file

@ -25,6 +25,10 @@ Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms
//-------------------------------------------------------------------------
#include "ns.h"
// Added Ninja Sliced fix
// Fixed Ninja sliced dead and rotation
// Added s_NinjaDieSlicedHack[]
//
#include "build.h"
@ -36,6 +40,7 @@ Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms
#include "weapon.h"
#include "sprite.h"
#include "actor.h"
#include "swcvar.h"
BEGIN_SW_NS
@ -46,6 +51,7 @@ extern STATE s_DebrisRat[];
extern STATE s_DebrisCrab[];
extern STATE s_DebrisStarFish[];
extern STATE s_NinjaDieSliced[];
extern STATE s_NinjaDieSlicedHack[];
extern STATEp sg_NinjaGrabThroat[];
@ -141,10 +147,14 @@ DoActorDie(short SpriteNum, short weapon)
if (User[weapon]->WeaponNum != WPN_FIST)
{
//SpawnBlood(SpriteNum, SpriteNum, -1, -1, -1, -1);
if (sw_ninjahack)
SpawnBlood(SpriteNum, SpriteNum, -1, -1, -1, -1);
InitPlasmaFountain(wp, sp);
InitPlasmaFountain(wp, sp);
PlaySound(DIGI_NINJAINHALF,&sp->x,&sp->y,&sp->z,v3df_none);
if (sw_ninjahack)
ChangeState(SpriteNum, &s_NinjaDieSlicedHack[5]);
else
ChangeState(SpriteNum, &s_NinjaDieSliced[0]);
}
else
@ -179,6 +189,7 @@ DoActorDie(short SpriteNum, short weapon)
u->ActorActionFunc = NULL;
//u->ActorActionFunc = NullAnimator;
if (!sw_ninjahack)
sprite[SpriteNum].ang = sprite[weapon].ang;
break;

View file

@ -24,6 +24,9 @@ Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms
*/
//-------------------------------------------------------------------------
#include "ns.h"
// Added improved crosshair accuracy
// Added UsingMenus for fragbar
//
#include "build.h"
@ -35,9 +38,12 @@ Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms
#include "common_game.h"
#include "network.h"
#include "text.h"
#include "menus.h"
BEGIN_SW_NS
#define BAR_HEIGHT 48
#define XDIM 320
#define YDIM 200
@ -418,8 +424,7 @@ void DrawPanelBorderSides(PLAYERp pp, short x, short y, short x2, short y2, shor
}
}
static
void BorderSetView(PLAYERp UNUSED(pp), int *Xdim, int *Ydim, int *ScreenSize)
static void BorderSetView(PLAYERp, int *Xdim, int *Ydim, int *ScreenSize)
{
int x, x2, y, y2;
BORDER_INFO *b;
@ -565,7 +570,6 @@ void
SetRedrawScreen(PLAYERp pp)
{
int i, j;
//int x, x2, y, y2;
BORDER_INFO *b;
if (pp != Player + myconnectindex)

View file

@ -444,14 +444,20 @@ static int CompareBreakInfo(void const * a, void const * b)
return break_info1->picnum - break_info2->picnum;
}
int CompareSearchBreakInfo(short *picnum, BREAK_INFOp break_info)
{
// will return a number less than 0 if picnum < break_info->picnum
return(*picnum - break_info->picnum);
}
BREAK_INFOp FindWallBreakInfo(short picnum)
{
return (BREAK_INFOp)bsearch(&picnum, &WallBreakInfo, SIZ(WallBreakInfo), sizeof(BREAK_INFO), CompareBreakInfo);
return(BREAK_INFOp)(bsearch(&picnum, &WallBreakInfo, SIZ(WallBreakInfo), sizeof(BREAK_INFO), (int(*)(const void*,const void*))CompareSearchBreakInfo));
}
BREAK_INFOp FindSpriteBreakInfo(short picnum)
{
return (BREAK_INFOp)bsearch(&picnum, &SpriteBreakInfo, SIZ(SpriteBreakInfo), sizeof(BREAK_INFO), CompareBreakInfo);
return(BREAK_INFOp)(bsearch(&picnum, &SpriteBreakInfo, SIZ(SpriteBreakInfo), sizeof(BREAK_INFO), (int(*)(const void*,const void*))CompareSearchBreakInfo));
}
//////////////////////////////////////////////
@ -661,7 +667,7 @@ int AutoBreakWall(WALLp wallp, int hit_x, int hit_y, int hit_z, short ang, short
return TRUE;
}
SWBOOL UserBreakWall(WALLp wp, short UNUSED(ang))
SWBOOL UserBreakWall(WALLp wp, short)
{
short SpriteNum;
SPRITEp sp;

View file

@ -23,6 +23,15 @@ Original Source: 1997 - Frank Maddin and Jim Norwood
Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms
*/
//-------------------------------------------------------------------------
// From SWP:
// Added SWKEYS
// Added SWGUN# and SWGOD
// Added SWMEDIC (25%)
// Added Full name key cheats - swbluecard - swgoldkey
// Added swquit
// Added 2 uzi's for swgimme
//
#include "ns.h"
#include "build.h"
@ -45,61 +54,61 @@ char CheatInputString[256];
SWBOOL EveryCheat = FALSE;
SWBOOL ResCheat = FALSE;
void ResCheatOn(PLAYERp UNUSED(pp), char *UNUSED(cheat_string))
const char *CheatKeyType;
void KeysCheat(PLAYERp pp, const char *cheat_string);
void ResCheatOn(PLAYERp, const char *)
{
ResCheat = TRUE;
}
void VoxCheat(PLAYERp UNUSED(pp), char *UNUSED(cheat_string))
void VoxCheat(PLAYERp, const char *)
{
//gs.Voxel ^= 1;
}
void RestartCheat(PLAYERp UNUSED(pp), char *UNUSED(cheat_string))
void RestartCheat(PLAYERp, const char *)
{
ExitLevel = TRUE;
}
void RoomCheat(PLAYERp UNUSED(pp), char *UNUSED(cheat_string))
void RoomCheat(PLAYERp, const char *)
{
extern SWBOOL FAF_DebugView;
FAF_DebugView ^= 1;
}
void SecretCheat(PLAYERp UNUSED(pp), char *UNUSED(cheat_string))
void SecretCheat(PLAYERp pp, const char *)
{
hud_stats = !hud_stats;
}
void NextCheat(PLAYERp UNUSED(pp), char *UNUSED(cheat_string))
void NextCheat(PLAYERp pp, const char *)
{
Level++;
ExitLevel = TRUE;
}
void PrevCheat(PLAYERp UNUSED(pp), char *UNUSED(cheat_string))
void PrevCheat(PLAYERp pp, const char *)
{
Level--;
ExitLevel = TRUE;
}
static int32_t showallmap;
void MapCheat(PLAYERp pp, char *UNUSED(cheat_string))
void MapCheat(PLAYERp pp, const char *)
{
showallmap ^= 1;
automapping ^= 1;
if (showallmap)
if (automapping)
MapSetAll2D(0);
else
MapSetAll2D(0xFF);
sprintf(ds, "SHOWALLMAP %s", showallmap ? "ON" : "OFF");
sprintf(ds, "AUTOMAPPING %s", automapping ? "ON" : "OFF" );
PutStringInfo(pp, ds);
}
void LocCheat(PLAYERp UNUSED(pp), char *UNUSED(cheat_string))
void LocCheat(PLAYERp pp, const char *)
{
extern SWBOOL LocationInfo;
LocationInfo++;
@ -107,8 +116,46 @@ void LocCheat(PLAYERp UNUSED(pp), char *UNUSED(cheat_string))
LocationInfo = 0;
}
void GunsCheat(PLAYERp pp, const char *cheat_string)
{
PLAYERp p;
short pnum;
unsigned int i;
short gAmmo[10] = {0,9,12,20,3,6,5,5,10,1};
const char *cp = cheat_string;
const char *str = "GIVEN WEAPON %1d";
int gunnum, x;
USERp u;
void WeaponCheat(PLAYERp UNUSED(pp), char *UNUSED(cheat_string))
cp += sizeof("swgun")-1;
gunnum = atol(cp);
if (gunnum == 0)
gunnum = 10;
if (gunnum < 2 || gunnum > 10)
return;
TRAVERSE_CONNECT(pnum)
{
p = &Player[pnum];
u = User[p->PlayerSprite];
x = gAmmo[gunnum-1];
if (TEST(p->WpnFlags, BIT(gunnum-1)) == 0)
p->WpnFlags += BIT(gunnum-2) << 1;
else
str = "ADD AMMO TO WEAPON %1d";
p->WpnAmmo[gunnum-1] += x;
if (p->WpnAmmo[gunnum-1] > DamageData[gunnum-1].max_ammo)
{
p->WpnAmmo[gunnum-1] = DamageData[gunnum-1].max_ammo;
str = "";
}
PlayerUpdateWeapon(p, u->WeaponNum);
}
sprintf(ds, str, gunnum);
PutStringInfo(pp, ds);
}
void WeaponCheat(PLAYERp pp, const char *)
{
PLAYERp p;
short pnum;
@ -135,8 +182,7 @@ void WeaponCheat(PLAYERp UNUSED(pp), char *UNUSED(cheat_string))
}
}
void GodCheat(PLAYERp pp, char *UNUSED(cheat_string))
void GodCheat(PLAYERp pp, const char *)
{
//
// GOD mode
@ -147,7 +193,7 @@ void GodCheat(PLAYERp pp, char *UNUSED(cheat_string))
PutStringInfo(pp, ds);
}
void ClipCheat(PLAYERp pp, char *UNUSED(cheat_string))
void ClipCheat(PLAYERp pp, const char *)
{
FLIP(pp->Flags, PF_CLIP_CHEAT);
@ -155,9 +201,9 @@ void ClipCheat(PLAYERp pp, char *UNUSED(cheat_string))
PutStringInfo(pp, ds);
}
void WarpCheat(PLAYERp pp, char *cheat_string)
void WarpCheat(PLAYERp pp, const char *cheat_string)
{
char *cp = cheat_string;
const char *cp = cheat_string;
int episode_num;
int level_num;
@ -185,7 +231,7 @@ void WarpCheat(PLAYERp pp, char *cheat_string)
PutStringInfo(pp, ds);
}
void ItemCheat(PLAYERp pp, char *cheat_string)
void ItemCheat(PLAYERp pp, const char *cheat_string)
{
//
// Get all ITEMS
@ -236,7 +282,121 @@ void ItemCheat(PLAYERp pp, char *cheat_string)
PlayerUpdateKeys(pp);
}
void EveryCheatToggle(PLAYERp pp, char *cheat_string)
VOID HealCheat(PLAYERp pp, const char *cheat_string)
{
short pnum;
const char *str = "";
TRAVERSE_CONNECT(pnum)
{
if (User[Player[pnum].PlayerSprite]->Health < pp->MaxHealth)
str = "ADDED HEALTH";
User[Player[pnum].PlayerSprite]->Health += 25;
}
PutStringInfo(pp, str);
}
VOID SortKeyCheat(PLAYERp pp, const char *sKey)
{
const char *sTemp = "";
CheatKeyType = "";
if (Bstrncasecmp(sKey, "swredcard",9) == 0)
{
sTemp = "swkey1";
CheatKeyType = "Red Cardkey";
}
else
if (Bstrncasecmp(sKey, "swbluecard",10) == 0)
{
sTemp = "swkey2";
CheatKeyType = "Blue Cardkey";
}
else
if (Bstrncasecmp(sKey, "swgreencard",11) == 0)
{
sTemp = "swkey3";
CheatKeyType = "Green Cardkey";
}
else
if (Bstrncasecmp(sKey, "swyellowcard",12) == 0)
{
sTemp = "swkey4";
CheatKeyType = "Yellow Cardkey";
}
else
if (Bstrncasecmp(sKey, "swgoldkey",9) == 0)
{
sTemp = "swkey5";
CheatKeyType = "Gold Key";
}
else
if (Bstrncasecmp(sKey, "swsilverkey",11) == 0)
{
sTemp = "swkey6";
CheatKeyType = "Silver Key";
}
else
if (Bstrncasecmp(sKey, "swbronzekey",11) == 0)
{
sTemp = "swkey7";
CheatKeyType = "Bronze Key";
}
else
if (Bstrncasecmp(sKey, "swredkey",8) == 0)
{
sTemp = "swkey8";
CheatKeyType = "Red Key";
}
if (Bstrncmp(sTemp, "", 1) != 0)
KeysCheat(pp, sTemp);
}
VOID KeysCheat(PLAYERp pp, const char *cheat_string)
{
// Get KEYS
PLAYERp p;
short pnum;
const char *cp = cheat_string;
const char *str = "Given all keys";
int keynum = 0;
cp += sizeof("swkey")-1;
keynum = atol(cp);
TRAVERSE_CONNECT(pnum)
{
p = &Player[pnum];
if (keynum < 1 || keynum > 8)
{
memset(p->HasKey, TRUE, sizeof(p->HasKey));
keynum = 0;
}
else
{
if (p->HasKey[keynum-1] == FALSE)
{
p->HasKey[keynum-1] = TRUE; // cards: 0=red 1=blue 2=green 3=yellow | keys: 4=gold 5=silver 6=bronze 7=red
str = "Given %s";
}
else
{
p->HasKey[keynum-1] = FALSE;
str = "Removed %s";
}
}
}
PlayerUpdateKeys(pp);
if (keynum == 0)
sprintf(ds, str);
else
sprintf(ds, str, CheatKeyType);
PutStringInfo(pp, ds);
}
void EveryCheatToggle(PLAYERp pp, const char *cheat_string)
{
EveryCheat ^= 1;
@ -248,16 +408,12 @@ void EveryCheatToggle(PLAYERp pp, char *cheat_string)
PutStringInfo(pp, ds);
}
void SaveCheat(PLAYERp pp, char *UNUSED(cheat_string))
{
}
void GeorgeFunc(PLAYERp pp, char *UNUSED(cheat_string))
void GeorgeFunc(PLAYERp pp, char *)
{
PlayerSound(DIGI_TAUNTAI9,&pp->posx,&pp->posy,&pp->posz,v3df_dontpan|v3df_doppler|v3df_follow,pp);
}
void BlackburnFunc(PLAYERp pp, char *UNUSED(cheat_string))
void BlackburnFunc(PLAYERp pp, char *)
{
PlayerSound(DIGI_TAUNTAI3,&pp->posx,&pp->posy,&pp->posz,v3df_dontpan|v3df_doppler|v3df_follow,pp);
}
@ -290,15 +446,27 @@ int cheatcmp(const char *str1, const char *str2, int len)
typedef struct
{
const char *CheatInputCode;
void (*CheatInputFunc)(PLAYERp, char *);
void (*CheatInputFunc)(PLAYERp, const char *);
char flags;
}CHEAT_INFO, *CHEAT_INFOp;
CHEAT_INFO ci[] =
{
{"swgod", GodCheat, 0},
{"swchan", GodCheat, 0},
{"swgimme", ItemCheat, 0},
{"swmedic", HealCheat, 0},
{"swkeys", KeysCheat, 0},
{"swredcard", SortKeyCheat, 0},
{"swbluecard", SortKeyCheat, 0},
{"swgreencard", SortKeyCheat, 0},
{"swyellowcard", SortKeyCheat, 0},
{"swgoldkey", SortKeyCheat, 0},
{"swsilverkey", SortKeyCheat, 0},
{"swbronzekey", SortKeyCheat, 0},
{"swredkey", SortKeyCheat, 0},
{"swgun#", GunsCheat, 0},
{"swtrek##", WarpCheat, 0},
{"swgreed", EveryCheatToggle, 0},
{"swghost", ClipCheat, 0},
@ -308,7 +476,6 @@ CHEAT_INFO ci[] =
{"swres", ResCheatOn, 0},
{"swloc", LocCheat, 0},
{"swmap", MapCheat, 0},
{"swsave", SaveCheat, CF_ALL},
{"swroom", RoomCheat, CF_NOTSW}, // Room above room dbug
#if DEBUG
{"swsecret", SecretCheat, CF_ALL},
@ -375,100 +542,7 @@ void CheatInput(void)
if (!match)
{
////DSPRINTF(ds,"Lost A Match %s", CheatInputString);
//MONO_PRINT(ds);
CheatInputMode = FALSE;
}
}
/* OLD CODE
void CheatInput(void)
{
static SWBOOL cur_show;
signed char MNU_InputString(char *, short);
int ret;
SWBOOL match = FALSE;
short i;
// don't use InputMode here - its set for CheatInputMode
if (MessageInputMode || MenuInputMode)
return;
if (!CheatInputMode)
{
if (inputState.GetKeyStatus(KEYSC_S))
{
//inputState.GetKeyStatus(KEYSC_S) = FALSE;
CheatInputMode = TRUE;
strcpy(CheatInputString,"s");
}
}
if (CheatInputMode)
{
// get new chars
ret = MNU_InputString(CheatInputString, 320-20);
// quick check input
switch (ret)
{
case FALSE: // Input finished (RETURN)
case -1: // Cancel Input (pressed ESC) or Err
CheatInputMode = FALSE;
inputState.keyFlushChars();
return;
case TRUE: // Got input
break;
}
// make sure string is lower cased
Bstrlwr(CheatInputString);
// check for at least one single match
for (i = 0; i < SIZ(ci); i++)
{
// compare without the NULL
if (cheatcmp(CheatInputString, ci[i].CheatInputCode, strlen(CheatInputString)) == 0)
{
////DSPRINTF(ds,"%s",CheatInputString);
//MONO_PRINT(ds);
// if they are equal in length then its a complet match
if (strlen(CheatInputString) == strlen(ci[i].CheatInputCode))
{
////DSPRINTF(ds,"Found A Match %s", CheatInputString);
//MONO_PRINT(ds);
match = TRUE;
CheatInputMode = FALSE;
inputState.keyFlushChars();
if (ci[i].CheatInputFunc)
(*ci[i].CheatInputFunc)(Player, CheatInputString);
return;
}
else
{
match = TRUE;
break;
}
}
}
if (!match)
{
////DSPRINTF(ds,"Lost A Match %s", CheatInputString);
//MONO_PRINT(ds);
CheatInputMode = FALSE;
inputState.keyFlushChars();
}
}
}
*/
END_SW_NS

View file

@ -280,20 +280,21 @@ InitPalette(void)
//
// Dive palettes
//
#define FOG_AMT 60 // is 15 in SWP.
#define LAVA_AMT 44 // is 11 in SWP.
for (i = 0; i < 256; i++)
tempbuf[i] = i;
// palette for underwater
paletteMakeLookupTable(PALETTE_DIVE, tempbuf, 0, 0, 60, TRUE);
paletteMakeLookupTable(PALETTE_DIVE, tempbuf, 0, 0, FOG_AMT, TRUE);
#define FOG_AMT 60
for (i = 0; i < 256; i++)
tempbuf[i] = i;
paletteMakeLookupTable(PALETTE_FOG, tempbuf, FOG_AMT, FOG_AMT, FOG_AMT, TRUE);
for (i = 0; i < 256; i++)
tempbuf[i] = i;
paletteMakeLookupTable(PALETTE_DIVE_LAVA, tempbuf, 44, 0, 0, TRUE);
paletteMakeLookupTable(PALETTE_DIVE_LAVA, tempbuf, LAVA_AMT, 0, 0, TRUE);
//
// 1 Range changes
@ -385,9 +386,9 @@ do
4 bytes and RGB are backwards.Here are the function
prototypes:
VBE_setPalette(long palstart, long palnum, char *dapal);
VBE_setPalette(int palstart, int palnum, char *dapal);
VBE_getPalette(long palstart, long palnum, char *dapal);
VBE_getPalette(int palstart, int palnum, char *dapal);
palstart is the offset of the first palette to set
palnum is the number of the palette entries to set
dapal is a pointer to the palette buffer.The palette

View file

@ -147,6 +147,7 @@ CON_COMMAND pre_commands[] =
{"help", CON_GetHelp},
//{"quit", CON_Quit},
#endif
{"swgod", CheatInput},
{"swchan", CheatInput},
{"swgimme", CheatInput},
{"swtrek##", CheatInput},
@ -157,6 +158,19 @@ CON_COMMAND pre_commands[] =
{"swloc", CheatInput},
{"swmap", CheatInput},
{"swsave", CheatInput},
{"swmedic", CheatInput},
{"swkeys", CheatInput},
{"swredcard", CheatInput},
{"swbluecard", CheatInput},
{"swgreencard", CheatInput},
{"swyellowcard", CheatInput},
{"swgoldkey", CheatInput},
{"swsilverkey", CheatInput},
{"swbronzekey", CheatInput},
{"swredkey", CheatInput},
{"swgun#", CheatInput},
{"swquit", CheatInput},
{"swexit", CheatInput},
{"sound", CON_SoundTest},
{"winpachinko", CON_WinPachinko},
{"config", CON_LoadSetup},
@ -212,7 +226,7 @@ uint8_t CON_CommandCmp(const char *str1, const char *str2, int len)
return TRUE;
}
SWBOOL IsCommand(char *str)
SWBOOL IsCommand(const char *str)
{
int i;
char first[512];

View file

@ -343,6 +343,11 @@ STATEp sg_CoolieDead[] =
s_CoolieDead
};
STATE s_CoolieDeadHead[] =
{
{COOLIE_DEAD_HEAD, COOLIE_DIE_RATE, DoActorDebris, &s_CoolieDeadHead[0]}
};
/*
typedef struct
{
@ -572,7 +577,11 @@ int SpawnCoolg(short SpriteNum)
USERp u = User[SpriteNum];
// Don't do a ghost every time
if (RANDOM_RANGE(1000) > 700) return 0;
if (RANDOM_RANGE(1000) > 700)
{
ChangeState(SpriteNum,&s_CoolieDeadHead[0]);
return(0);
}
NewCoolg(SpriteNum);

View file

@ -36,6 +36,8 @@ Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms
BEGIN_SW_NS
extern int GlobSpeedSO;
void CopySectorWalls(short dest_sectnum, short src_sectnum)
{
short dest_wall_num, src_wall_num, start_wall;
@ -167,7 +169,6 @@ void CopySectorMatch(short match)
if (TEST(sector[dest_sp->sectnum].extra, SECTFX_SECTOR_OBJECT))
{
SECTOR_OBJECTp sop;
extern int GlobSpeedSO;
// find and add sprite to SO
sop = DetectSectorObject(&sector[sprite[src_move].sectnum]);

View file

@ -1602,7 +1602,7 @@ void ResChange(void)
for (i = 0; i < numpages; i++)
{
clearview(0);
nextpage();
videoNextPage();
}
// needs to be called from drawscreen - crashes otherwise
@ -1654,7 +1654,7 @@ void ResChange(void)
for (i = 0; i < numpages; i++)
{
clearview(0);
nextpage();
videoNextPage();
}
SetupAspectRatio();
@ -1806,63 +1806,6 @@ void DrawCrosshair(PLAYERp pp)
if (dimensionmode == 6)
return;
// wdx = 160;
// wdy = 100;
#if 0
if (cl_autoaim)
{
int daz;
short hit_sprite, daang;
static int handle=-1;
daz = pp->posz + pp->bob_z;
daang = 32;
if ((hit_sprite = WeaponAutoAimHitscan(pp->SpriteP, &daz, &daang, FALSE)) != -1)
{
SPRITEp hp = &sprite[hit_sprite];
USERp hu = User[hit_sprite];
vec2_t const zero = { 0, 0 };
// Find the delta coordinates from player to monster that is targeted
vec2_t dxy = { hp->x - pp->posx, hp->y - pp->posy };
int dz = ((hp->z - (SPRITE_SIZE_Z(hit_sprite)/2)) - pp->posz) >> 4;
rotatepoint(zero, dxy, (-pp->pang)&2047, &dxy);
if (dxy.x == 0) return;
wdx = windowxy1.x + ((windowxy2.x-windowxy1.x)/2);
wdy = windowxy1.y + ((windowxy2.y-windowxy1.y)/2);
x = (dxy.y * wdx << 8) / dxy.x + (wdx << 8);
y = (dz * wdx << 8) / dxy.x + (wdy << 8);
y -= 100;
y += (pp->horiz*wdx)/160;
if (pp->CurWpn == pp->Wpn[WPN_RAIL])
{
if (!FX_SoundActive(handle))
handle = PlaySound(DIGI_RAILLOCKED, &pp->posx, &pp->posy, &pp->posz, v3df_follow|v3df_dontpan);
}
}
else
{
// It didn't target anything.
if (pp->CurWpn == pp->Wpn[WPN_RAIL])
{
if (FX_SoundActive(handle))
FX_StopSound(handle);
}
goto NORMALXHAIR;
}
rotatesprite(x << 8, y << 8, (1 << 16), 0,
2326, 10, 0,
ROTATE_SPRITE_VIEW_CLIP|ROTATE_SPRITE_CORNER, 0, 0, xdim - 1, ydim - 1);
}
else
#endif
{
//NORMALXHAIR:
rotatesprite(CrosshairX, CrosshairY, (1 << 16), 0,
@ -2234,6 +2177,7 @@ short ScreenSavePic = FALSE;
SWBOOL PicInView(short, SWBOOL);
void DoPlayerDiveMeter(PLAYERp pp);
void MoveScrollMode2D(PLAYERp pp);
void
drawscreen(PLAYERp pp)
@ -2272,13 +2216,13 @@ drawscreen(PLAYERp pp)
{
#define TEN_PIC 5109
flushperms();
renderFlushPerms();
// note - could put Order Info Pages at the top like this also
rotatesprite(0,0,65536L,0,TEN_PIC,0,0,
(ROTATE_SPRITE_CORNER|ROTATE_SPRITE_SCREEN_CLIP|ROTATE_SPRITE_NON_MASK|ROTATE_SPRITE_IGNORE_START_MOST),
0, 0, xdim-1, ydim-1);
nextpage();
videoNextPage();
return;
}
#endif
@ -2471,7 +2415,6 @@ drawscreen(PLAYERp pp)
if ((dimensionmode == 5 || dimensionmode == 6) && pp == Player+myconnectindex)
{
void MoveScrollMode2D(PLAYERp pp);
extern SWBOOL ScrollMode2D;
if (ScrollMode2D)

View file

@ -102,7 +102,7 @@ BEGIN_SW_NS
void pClearSpriteList(PLAYERp pp);
signed char MNU_InputSmallString(char*, short);
signed char MNU_InputString(char*, short);
SWBOOL IsCommand(char* str);
SWBOOL IsCommand(const char* str);
SWBOOL MNU_StartNetGame(void);
const char* AppProperName = "VoidSW";
@ -245,7 +245,7 @@ extern int bufferjitter;
SWBOOL CameraTestMode = FALSE;
char ds[512]; // debug string
char ds[645]; // debug string
extern short NormalVisibility;
@ -366,37 +366,6 @@ int krand1(void)
#endif
/*
void HeapCheck(char *file, int line)
{
switch( _heapchk() )
{
case _HEAPOK:
//printf( "OK - heap is good\n" );
break;
case _HEAPEMPTY:
//printf( "OK - heap is empty\n" );
break;
case _HEAPBADBEGIN:
sprintf(ds, "ERROR - heap is damaged: %s, %d", file, line);
MONO_PRINT(ds);
DebugWriteString(ds);
setvmode(0x3);
printf( "%s\n", ds);
exit(0);
break;
case _HEAPBADNODE:
sprintf(ds, "ERROR - bad node in heap: %s, %d", file, line);
MONO_PRINT(ds);
DebugWriteString(ds);
setvmode(0x3);
printf( "%s\n", ds);
exit(0);
break;
}
}
*/
#if DEBUG
SWBOOL
ValidPtr(void *ptr)
@ -645,8 +614,7 @@ setup2dscreen(void)
void
TerminateGame(void)
void TerminateGame(void)
{
int i,j;
int oldtotalclock;
@ -675,8 +643,7 @@ TerminateGame(void)
}
void
LoadLevel(const char *filename)
void LoadLevel(const char *filename)
{
int pos;
@ -840,8 +807,7 @@ static void SW_FatalEngineError(void)
I_Error("There was a problem initialising the Build engine: %s", engineerrstr);
}
void
InitGame()
void InitGame()
{
extern int MovesPerPacket;
//void *ReserveMem=NULL;
@ -935,7 +901,7 @@ InitGame()
// LoadImages will now proceed to steal all the remaining heap space
//_outtext("\n\n\n\n\n\n\n\n");
//AnimateCacheCursor();
buildputs("Loading sound and graphics...\n");
initprintf("Loading sound and graphics...\n");
TileFiles.LoadArtSet("tiles%03d.art");
// Now free it up for later use
@ -1067,16 +1033,35 @@ LEVEL_INFO LevelInfo[MAX_LEVELS+2] = // Shareware
};
#endif*/
char EpisodeNames[2][MAX_EPISODE_NAME_LEN+2] =
const char *ThemeSongs[6] =
{
"THEME.MID",
"ENDLEV3.VOC",
"SERPENT.MID",
"SUMO.MID",
"ZILLA.MID"
"ENDING.MID"
};
int ThemeTrack[6] =
{
2,3,13,13,13,14
};
char EpisodeNames[3][MAX_EPISODE_NAME_LEN+2] =
{
"^Enter the Wang",
"^Code of Honor"
"^Code of Honor",
"^User Maps",
};
char EpisodeSubtitles[2][MAX_EPISODE_SUBTITLE_LEN+1] =
char EpisodeSubtitles[3][MAX_EPISODE_SUBTITLE_LEN+1] =
{
"Four levels (Shareware Version)",
"Eighteen levels (Full Version Only)"
"Eighteen levels (Full Version Only)",
"Select a user map to play",
};
char SkillNames[4][MAX_SKILL_NAME_LEN+2] =
{
"^Tiny grasshopper",
@ -1502,8 +1487,7 @@ TerminateLevel(void)
//HEAP_CHECK();
}
void
NewLevel(void)
void NewLevel(void)
{
DSPRINTF(ds,"NewLevel");
@ -1590,8 +1574,8 @@ ResetKeys(void)
inputState.ClearAllKeyStatus();
}
SWBOOL
KeyPressed(void)
SWBOOL KeyPressed(void)
{
int i;
@ -1604,8 +1588,7 @@ KeyPressed(void)
return FALSE;
}
uint8_t*
KeyPressedRange(uint8_t* kb, uint8_t* ke)
uint8_t* KeyPressedRange(uint8_t* kb, uint8_t* ke)
{
uint8_t* k;
@ -1618,8 +1601,7 @@ KeyPressedRange(uint8_t* kb, uint8_t* ke)
return NULL;
}
void
ResetKeyRange(uint8_t* kb, uint8_t* ke)
void ResetKeyRange(uint8_t* kb, uint8_t* ke)
{
uint8_t* k;
@ -1639,8 +1621,7 @@ void PlayTheme()
MONO_PRINT(ds);
}
void
LogoLevel(void)
void LogoLevel(void)
{
char called;
int fin;
@ -1713,8 +1694,7 @@ LogoLevel(void)
}
void
CreditsLevel(void)
void CreditsLevel(void)
{
char called;
int fin;
@ -1804,8 +1784,7 @@ CreditsLevel(void)
}
void
SybexScreen(void)
void SybexScreen(void)
{
if (!SW_SHAREWARE) return;
@ -1819,75 +1798,6 @@ SybexScreen(void)
while (!KeyPressed() && !quitevent) handleevents();
}
// CTW REMOVED
/*
void
TenScreen(void)
{
char called;
int fin;
char backup_pal[256*3];
char pal[PAL_SIZE];
char tempbuf[256];
char *palook_bak = palookup[0];
int i;
uint32_t bak;
int bakready2send;
if (CommEnabled)
return;
bak = totalclock;
flushperms();
clearview(0);
nextpage();
for (i = 0; i < 256; i++)
tempbuf[i] = i;
palookup[0] = tempbuf;
GetPaletteFromVESA(pal);
memcpy(backup_pal, pal, PAL_SIZE);
if ((fin = k open4load("ten.pal", 0)) != -1)
{
k read(fin, pal, PAL_SIZE);
k close(fin);
}
// palette to black
FadeOut(0, 0);
bakready2send = ready2send;
//totalclock = 0;
//ototalclock = 0;
flushperms();
// draw it
rotatesprite(0, 0, RS_SCALE, 0, TEN_PIC, 0, 0, TITLE_ROT_FLAGS, 0, 0, xdim - 1, ydim - 1);
// bring to the front - still back palette
nextpage();
// set pal
SetPaletteToVESA(pal);
//FadeIn(0, 3);
ResetKeys();
while (!KeyPressed());
palookup[0] = palook_bak;
clearview(0);
nextpage();
SetPaletteToVESA(backup_pal);
// put up a blank screen while loading
clearview(0);
nextpage();
ready2send = bakready2send;
totalclock = bak;
}
*/
// CTW REMOVED END
void
@ -1983,16 +1893,14 @@ void DrawLoadLevelScreen(void)
short PlayerQuitMenuLevel = -1;
void
IntroAnimLevel(void)
void IntroAnimLevel(void)
{
DSPRINTF(ds,"IntroAnimLevel");
MONO_PRINT(ds);
playanm(0);
}
void
MenuLevel(void)
void MenuLevel(void)
{
char called;
int fin;
@ -2001,35 +1909,6 @@ MenuLevel(void)
DSPRINTF(ds,"MenuLevel...");
MONO_PRINT(ds);
if (AutoNet)
{
DrawMenuLevelScreen();
if (CommEnabled)
{
sprintf(ds,"Lo Wang is waiting for other players...");
MNU_MeasureString(ds, &w, &h);
MNU_DrawString(TEXT_TEST_COL(w), 170, ds, 1, 16);
sprintf(ds,"They are afraid!");
MNU_MeasureString(ds, &w, &h);
MNU_DrawString(TEXT_TEST_COL(w), 180, ds, 1, 16);
}
videoNextPage();
waitforeverybody();
FirstTimeIntoGame = TRUE;
MNU_StartNetGame();
FirstTimeIntoGame = FALSE;
waitforeverybody();
ExitLevel = FALSE;
FinishedLevel = FALSE;
BorderAdjust = TRUE;
UsingMenus = FALSE;
InMenuLevel = FALSE;
return;
}
// do demos only if not playing multi play
if (!CommEnabled && numplayers <= 1 && !FinishAnim && !NoDemoStartup)
@ -2173,8 +2052,7 @@ MenuLevel(void)
videoNextPage();
}
void
SceneLevel(void)
void SceneLevel(void)
{
SWBOOL dp_bak;
SWBOOL dm_bak;
@ -2204,8 +2082,7 @@ SceneLevel(void)
DemoPlaying = dp_bak;
}
void
LoadingLevelScreen(char *level_name)
void LoadingLevelScreen(char *level_name)
{
short w,h;
extern SWBOOL DemoMode;
@ -2231,8 +2108,7 @@ LoadingLevelScreen(char *level_name)
videoNextPage();
}
void
gNextState(STATEp *State)
void gNextState(STATEp *State)
{
// Transition to the next state
*State = (*State)->NextState;
@ -2245,8 +2121,7 @@ gNextState(STATEp *State)
}
// Generic state control
void
gStateControl(STATEp *State, int *tics)
void gStateControl(STATEp *State, int *tics)
{
*tics += synctics;
@ -2284,8 +2159,7 @@ int BonusGrabSound(short SpriteNum)
return 0;
}
void
BonusScreen(PLAYERp pp)
void BonusScreen(PLAYERp pp)
{
int minutes,seconds,second_tics;
extern SWBOOL FinishedLevel;
@ -2563,8 +2437,7 @@ void EndGameSequence(void)
}
}
void
StatScreen(PLAYERp mpp)
void StatScreen(PLAYERp mpp)
{
int minutes,seconds,second_tics;
extern SWBOOL FinishedLevel;
@ -2745,8 +2618,7 @@ StatScreen(PLAYERp mpp)
Terminate3DSounds();
}
void
GameIntro(void)
void GameIntro(void)
{
DSPRINTF(ds,"GameIntro...");
@ -2779,8 +2651,7 @@ GameIntro(void)
MenuLevel();
}
void
Control()
void Control()
{
InitGame();
@ -2788,7 +2659,6 @@ Control()
MNU_InitMenus();
InGame = TRUE;
GameIntro();
//NewGame = TRUE;
while (!QuitFlag)
{
@ -2805,8 +2675,7 @@ Control()
}
void
_Assert(const char *expr, const char *strFile, unsigned uLine)
void _Assert(const char *expr, const char *strFile, unsigned uLine)
{
sprintf(ds, "Assertion failed: %s %s, line %u", expr, strFile, uLine);
MONO_PRINT(ds);
@ -2820,8 +2689,7 @@ _Assert(const char *expr, const char *strFile, unsigned uLine)
}
void
_ErrMsg(const char *strFile, unsigned uLine, const char *format, ...)
void _ErrMsg(const char *strFile, unsigned uLine, const char *format, ...)
{
va_list arglist;
@ -2850,8 +2718,7 @@ _ErrMsg(const char *strFile, unsigned uLine, const char *format, ...)
exit(0);
}
void
dsprintf(char *str, char *format, ...)
void dsprintf(char *str, const char *format, ...)
{
va_list arglist;
@ -2860,8 +2727,7 @@ dsprintf(char *str, char *format, ...)
va_end(arglist);
}
void
dsprintf_null(char *str, const char *format, ...)
void dsprintf_null(char *str, const char *format, ...)
{
va_list arglist;
}
@ -3033,8 +2899,7 @@ void InitRunLevel(void)
StartAmbientSound();
}
void
RunLevel(void)
void RunLevel(void)
{
int i;
InitRunLevel();
@ -3087,7 +2952,7 @@ void DosScreen(void)
void AlphaMessage(void)
{
Global_PLock = TRUE; // Set the hardwired parental lock mode!
buildputs(""
initprintf(""
" SHADOW WARRIOR(tm) Version 1.2 \n"
"Copyright (c) 1997 3D Realms Entertainment\n"
"\n\n"
@ -3103,7 +2968,7 @@ void AlphaMessage(void)
#if 0 //UK_VERSION
void AlphaMessage(void)
{
buildputs(""
initprintf(""
" SHADOW WARRIOR(tm) Version 1.2 (UK Version) \n"
"Copyright (c) 1997 3D Realms Entertainment\n"
"\n\n"
@ -3120,13 +2985,13 @@ void AlphaMessage(void)
{
if (SW_SHAREWARE)
{
buildputs("SHADOW WARRIOR(tm) Version 1.2 (Shareware Version)\n");
initprintf("SHADOW WARRIOR(tm) Version 1.2 (Shareware Version)\n");
}
else
{
buildputs("SHADOW WARRIOR(tm) Version 1.2\n");
initprintf("SHADOW WARRIOR(tm) Version 1.2\n");
}
buildputs("Copyright (c) 1997 3D Realms Entertainment\n\n\n");
initprintf("Copyright (c) 1997 3D Realms Entertainment\n\n");
}
#endif
@ -3239,49 +3104,6 @@ int DetectShareware(void)
void CommandLineHelp(char const * const * argv)
{
int i;
#ifdef RENDERTYPEWIN
char *str;
int strl;
strl = 30 + 70;
for (i=0; i < (int)SIZ(cli_arg); i++)
if (cli_arg[i].arg_fmt && (!SW_SHAREWARE || (!cli_arg[i].notshareware && SW_SHAREWARE)))
strl += strlen(cli_arg[i].arg_fmt) + 1 + strlen(cli_arg[i].arg_descr) + 1;
str = (char *)malloc(strl);
if (str)
{
strcpy(str,"Usage: sw [options]\n");
strcat(str,"options: ('/' may be used instead of '-', <> text is optional)\n\n");
for (i=0; i < (int)SIZ(cli_arg); i++)
{
if (cli_arg[i].arg_fmt && (!SW_SHAREWARE || (!cli_arg[i].notshareware && SW_SHAREWARE)))
{
strcat(str, cli_arg[i].arg_fmt);
strcat(str, "\t");
strcat(str, cli_arg[i].arg_descr);
strcat(str, "\n");
}
}
wm_msgbox("Shadow Warrior Help",str);
free(str);
}
#else
if (SW_SHAREWARE)
printf("Usage: %s [options]\n", argv[0]);
else
printf("Usage: %s [options] [map]\n", argv[0]);
printf("options: ('/' may be used instead of '-', <> text is optional)\n\n");
for (i = 0; i < (int)SIZ(cli_arg); i++)
{
if (cli_arg[i].arg_fmt && (!SW_SHAREWARE || (!cli_arg[i].notshareware && SW_SHAREWARE)))
{
printf(" %-20s %-30s\n",cli_arg[i].arg_fmt, cli_arg[i].arg_descr);
}
}
#endif
}
int32_t GameInterface::app_main()
@ -3333,8 +3155,7 @@ int32_t GameInterface::app_main()
return 0;
}
void
ManualPlayerInsert(PLAYERp pp)
void ManualPlayerInsert(PLAYERp pp)
{
PLAYERp npp = Player + numplayers;
int i;
@ -3365,8 +3186,7 @@ ManualPlayerInsert(PLAYERp pp)
}
void
BotPlayerInsert(PLAYERp pp)
void BotPlayerInsert(PLAYERp pp)
{
PLAYERp npp = Player + numplayers;
int i;
@ -3398,8 +3218,7 @@ BotPlayerInsert(PLAYERp pp)
// SetFragBar(pp);
}
void
ManualPlayerDelete(PLAYERp cur_pp)
void ManualPlayerDelete(PLAYERp cur_pp)
{
short i, nexti;
USERp u;
@ -3433,8 +3252,7 @@ ManualPlayerDelete(PLAYERp cur_pp)
}
#if DEBUG
void
SinglePlayInput(PLAYERp pp)
void SinglePlayInput(PLAYERp pp)
{
int pnum = myconnectindex;
uint8_t* kp;
@ -3470,8 +3288,7 @@ SinglePlayInput(PLAYERp pp)
}
void
DebugKeys(PLAYERp pp)
void DebugKeys(PLAYERp pp)
{
short w, h;
@ -3539,8 +3356,7 @@ DebugKeys(PLAYERp pp)
#endif
void
ConKey(void)
void ConKey(void)
{
#if DEBUG
// Console Input Panel
@ -3580,8 +3396,7 @@ ConKey(void)
#endif
}
void
FunctionKeys(PLAYERp pp)
void FunctionKeys(PLAYERp pp)
{
extern SWBOOL GamePaused;
extern short QuickLoadNum;
@ -4116,8 +3931,7 @@ void GetHelpInput(PLAYERp pp)
short MirrorDelay;
int MouseYAxisMode = -1;
void
getinput(SW_PACKET *loc)
void getinput(SW_PACKET *loc)
{
SWBOOL found = FALSE;
int i;
@ -4652,7 +4466,7 @@ void drawoverheadmap(int cposx, int cposy, int czoom, short cang)
continue;
if (sector[i].floorshade != sector[wal->nextsector].floorshade)
continue;
col = 12;
col = 12; // 1=white / 31=black / 44=green / 56=pink / 128=yellow / 210=blue / 248=orange / 255=purple
}
ox = wal->x - cposx;
@ -4691,7 +4505,7 @@ void drawoverheadmap(int cposx, int cposy, int czoom, short cang)
SHOWSPRITE:
spr = &sprite[j];
col = 56;
col = 56; // 1=white / 31=black / 44=green / 56=pink / 128=yellow / 210=blue / 248=orange / 255=purple
if ((spr->cstat & 1) > 0)
col = 248;
if (j == k)
@ -4908,8 +4722,7 @@ SHOWSPRITE:
#if RANDOM_DEBUG
int
RandomRange(int range, char *file, unsigned line)
int RandomRange(int range, char *file, unsigned line)
{
uint32_t rand_num;
uint32_t value;
@ -4939,8 +4752,7 @@ RandomRange(int range, char *file, unsigned line)
return value;
}
#else
int
RandomRange(int range)
int RandomRange(int range)
{
uint32_t rand_num;
uint32_t value;
@ -4963,8 +4775,7 @@ RandomRange(int range)
}
#endif
int
StdRandomRange(int range)
int StdRandomRange(int range)
{
uint32_t rand_num;
uint32_t value;
@ -5030,5 +4841,4 @@ bool GameInterface::mouseInactiveConditional(bool condition)
}
// vim:ts=4:sw=4:expandtab:
END_SW_NS

View file

@ -383,7 +383,7 @@ extern char MessageOutputString[256];
#define TRAVERSE_SPRITE_SECT(l, o, n) for ((o) = (l); (n) = nextspritesect[o], (o) != -1; (o) = (n))
#define TRAVERSE_SPRITE_STAT(l, o, n) for ((o) = (l); (n) = nextspritestat[o], (o) != -1; (o) = (n))
#define TRAVERSE_CONNECT(i) for (i = connecthead; i != -1 && i != connectpoint2[i]; i = connectpoint2[i])
#define TRAVERSE_CONNECT(i) for (i = connecthead; i != -1; i = connectpoint2[i])
#define NORM_ANGLE(ang) ((ang) & 2047)
@ -853,7 +853,7 @@ int minitextshade(int x,int y,char *t,char s,char p,char sb);
void operatefta(void);
void adduserquote(const char *daquote);
void operateconfta(void);
void addconquote(char *daquote);
void addconquote(const char *daquote);
///////////////////////////////////////////////////////////////////////////////////////////
//
@ -962,12 +962,14 @@ typedef struct
} LEVEL_INFO, *LEVEL_INFOp, * *LEVEL_INFOpp;
extern LEVEL_INFO LevelInfo[MAX_LEVELS_REG+2];
extern int ThemeTrack[6]; // w
extern const char *ThemeSongs[6]; //
#define MAX_EPISODE_NAME_LEN 24
extern char EpisodeNames[2][MAX_EPISODE_NAME_LEN+2]; // +2 = leading '^' and trailing NULL
extern char EpisodeNames[3][MAX_EPISODE_NAME_LEN+2];
#define MAX_EPISODE_SUBTITLE_LEN 40
extern char EpisodeSubtitles[2][MAX_EPISODE_SUBTITLE_LEN+1];
extern char EpisodeSubtitles[3][MAX_EPISODE_SUBTITLE_LEN+1];
#define MAX_SKILL_NAME_LEN 24
extern char SkillNames[4][MAX_SKILL_NAME_LEN+2];
@ -2326,7 +2328,7 @@ void LoadKVXFromScript(const char *filename); // scrip2.c
void LoadPLockFromScript(const char *filename); // scrip2.c
void LoadCustomInfoFromScript(const char *filename); // scrip2.c
void EveryCheatToggle(PLAYERp pp,char *cheat_string); // cheats.c
void EveryCheatToggle(PLAYERp pp,const char *cheat_string); // cheats.c
int PlayerInitChemBomb(PLAYERp pp); // jweapon.c
int PlayerInitFlashBomb(PLAYERp pp); // jweapon.c

View file

@ -354,10 +354,10 @@ int DoHornetMatchPlayerZ(short SpriteNum)
SPRITEp sp = &sprite[SpriteNum];
USERp u = User[SpriteNum];
SPRITEp tsp = User[SpriteNum]->tgt_sp;
long zdiff,zdist;
long loz,hiz;
int zdiff,zdist;
int loz,hiz;
long bound;
int bound;
// actor does a sine wave about u->sz - this is the z mid point
@ -408,11 +408,11 @@ int DoHornetMatchPlayerZ(short SpriteNum)
u->sz = bound;
}
u->sz = min(long(u->sz), long(loz - u->floor_dist));
u->sz = max(long(u->sz), long(hiz + u->ceiling_dist));
u->sz = min(u->sz, loz - u->floor_dist);
u->sz = max(u->sz, hiz + u->ceiling_dist);
u->Counter = (u->Counter + (ACTORMOVETICS << 3) + (ACTORMOVETICS << 1)) & 2047;
sp->z = u->sz + ((HORNET_BOB_AMT * (long)sintable[u->Counter]) >> 14);
sp->z = u->sz + ((HORNET_BOB_AMT * (int)sintable[u->Counter]) >> 14);
bound = u->hiz + u->ceiling_dist + HORNET_BOB_AMT;
if (sp->z < bound)
@ -461,12 +461,12 @@ int DoHornetCircle(short SpriteNum)
SPRITEp sp = &sprite[SpriteNum];
USERp u = User[SpriteNum];
SPRITEp tsp = User[SpriteNum]->tgt_sp;
long nx,ny,bound;
int nx,ny,bound;
sp->ang = NORM_ANGLE(sp->ang + u->Counter2);
nx = sp->xvel * (long) sintable[NORM_ANGLE(sp->ang + 512)] >> 14;
ny = sp->xvel * (long) sintable[sp->ang] >> 14;
nx = sp->xvel * (int) sintable[NORM_ANGLE(sp->ang + 512)] >> 14;
ny = sp->xvel * (int) sintable[sp->ang] >> 14;
if (!move_actor(SpriteNum, nx, ny, 0L))
{
@ -475,8 +475,8 @@ int DoHornetCircle(short SpriteNum)
// try moving in the opposite direction
u->Counter2 = -u->Counter2;
sp->ang = NORM_ANGLE(sp->ang + 1024);
nx = sp->xvel * (long) sintable[NORM_ANGLE(sp->ang + 512)] >> 14;
ny = sp->xvel * (long) sintable[sp->ang] >> 14;
nx = sp->xvel * (int) sintable[NORM_ANGLE(sp->ang + 512)] >> 14;
ny = sp->xvel * (int) sintable[sp->ang] >> 14;
if (!move_actor(SpriteNum, nx, ny, 0L))
{
@ -514,7 +514,7 @@ DoHornetDeath(short SpriteNum)
{
SPRITEp sp = &sprite[SpriteNum];
USERp u = User[SpriteNum];
long nx, ny;
int nx, ny;
if (TEST(u->Flags, SPR_FALLING))
{
@ -535,8 +535,8 @@ DoHornetDeath(short SpriteNum)
DoActorSlide(SpriteNum);
// slide while falling
nx = sp->xvel * (long) sintable[NORM_ANGLE(sp->ang + 512)] >> 14;
ny = sp->xvel * (long) sintable[sp->ang] >> 14;
nx = sp->xvel * (int) sintable[NORM_ANGLE(sp->ang + 512)] >> 14;
ny = sp->xvel * (int) sintable[sp->ang] >> 14;
u->ret = move_sprite(SpriteNum, nx, ny, 0L, u->ceiling_dist, u->floor_dist, 1, ACTORMOVETICS);
@ -559,7 +559,7 @@ int DoCheckSwarm(short SpriteNum)
short i,nexti;
SPRITEp sp = &sprite[SpriteNum], tsp;
USERp u = User[SpriteNum], tu;
long dist, pdist, a,b,c;
int dist, pdist, a,b,c;
PLAYERp pp;
if (!MoveSkip8) return 0; // Don't over check

View file

@ -180,8 +180,7 @@ void UpdateMiniBar(PLAYERp pp)
}
void
PanelInvTestSuicide(PANEL_SPRITEp psp)
void PanelInvTestSuicide(PANEL_SPRITEp psp)
{
if (TEST(psp->flags, PANF_SUICIDE))
{
@ -189,8 +188,7 @@ PanelInvTestSuicide(PANEL_SPRITEp psp)
}
}
PANEL_SPRITEp
SpawnInventoryIcon(PLAYERp pp, short InventoryNum)
PANEL_SPRITEp SpawnInventoryIcon(PLAYERp pp, short InventoryNum)
{
PANEL_SPRITEp psp;
short x,y;
@ -221,8 +219,7 @@ SpawnInventoryIcon(PLAYERp pp, short InventoryNum)
return psp;
}
void
KillPanelInv(PLAYERp pp, short InventoryNum)
void KillPanelInv(PLAYERp pp, short InventoryNum)
{
ASSERT(pp->InventorySprite[InventoryNum]);
ASSERT(InventoryNum < MAX_INVENTORY);
@ -232,15 +229,13 @@ KillPanelInv(PLAYERp pp, short InventoryNum)
pp->InventorySprite[InventoryNum] = NULL;
}
void
KillPlayerIcon(PLAYERp pp, PANEL_SPRITEp *pspp)
void KillPlayerIcon(PLAYERp pp, PANEL_SPRITEp *pspp)
{
SET((*pspp)->flags, PANF_SUICIDE);
(*pspp) = NULL;
}
void
KillAllPanelInv(PLAYERp pp)
void KillAllPanelInv(PLAYERp pp)
{
short i;
@ -256,8 +251,7 @@ KillAllPanelInv(PLAYERp pp)
}
}
PANEL_SPRITEp
SpawnIcon(PLAYERp pp, PANEL_STATEp state)
PANEL_SPRITEp SpawnIcon(PLAYERp pp, PANEL_STATEp state)
{
PANEL_SPRITEp psp;
short i;
@ -304,8 +298,7 @@ void AutoPickInventory(PLAYERp pp)
}
}
void
UseInventoryMedkit(PLAYERp pp)
void UseInventoryMedkit(PLAYERp pp)
{
USERp u = User[pp->PlayerSprite];
short diff;
@ -353,8 +346,7 @@ UseInventoryMedkit(PLAYERp pp)
// CHEMICAL WARFARE CANISTERS
//
//////////////////////////////////////////////////////////////////////
void
UseInventoryChemBomb(PLAYERp pp)
void UseInventoryChemBomb(PLAYERp pp)
{
USERp u = User[pp->PlayerSprite];
short diff;
@ -379,8 +371,7 @@ UseInventoryChemBomb(PLAYERp pp)
// FLASH BOMBS
//
//////////////////////////////////////////////////////////////////////
void
UseInventoryFlashBomb(PLAYERp pp)
void UseInventoryFlashBomb(PLAYERp pp)
{
USERp u = User[pp->PlayerSprite];
short diff;
@ -405,8 +396,7 @@ UseInventoryFlashBomb(PLAYERp pp)
// CALTROPS
//
//////////////////////////////////////////////////////////////////////
void
UseInventoryCaltrops(PLAYERp pp)
void UseInventoryCaltrops(PLAYERp pp)
{
USERp u = User[pp->PlayerSprite];
short diff;
@ -432,8 +422,7 @@ UseInventoryCaltrops(PLAYERp pp)
//
//////////////////////////////////////////////////////////////////////
void
UseInventoryRepairKit(PLAYERp pp)
void UseInventoryRepairKit(PLAYERp pp)
{
SPRITEp sp = pp->SpriteP;
short inv = INVENTORY_REPAIR_KIT;
@ -462,8 +451,7 @@ UseInventoryRepairKit(PLAYERp pp)
//
//////////////////////////////////////////////////////////////////////
void
UseInventoryCloak(PLAYERp pp)
void UseInventoryCloak(PLAYERp pp)
{
SPRITEp sp = pp->SpriteP;
@ -489,8 +477,7 @@ UseInventoryCloak(PLAYERp pp)
PlayerSound(DIGI_IAMSHADOW,&pp->posx,&pp->posy,&pp->posz,v3df_follow|v3df_dontpan,pp);
}
void
StopInventoryCloak(PLAYERp pp, short InventoryNum)
void StopInventoryCloak(PLAYERp pp, short InventoryNum)
{
SPRITEp sp = pp->SpriteP;
@ -518,8 +505,7 @@ StopInventoryCloak(PLAYERp pp, short InventoryNum)
//
//////////////////////////////////////////////////////////////////////
#if 0
void
UseInventoryEnvironSuit(PLAYERp pp)
void UseInventoryEnvironSuit(PLAYERp pp)
{
SPRITEp sp = pp->SpriteP;
short inv = INVENTORY_ENVIRON_SUIT;
@ -533,8 +519,7 @@ UseInventoryEnvironSuit(PLAYERp pp)
}
}
void
StopInventoryEnvironSuit(PLAYERp pp, short InventoryNum)
void StopInventoryEnvironSuit(PLAYERp pp, short InventoryNum)
{
SPRITEp sp = pp->SpriteP;
short inv = INVENTORY_ENVIRON_SUIT;
@ -908,7 +893,7 @@ void InventoryBarUpdatePosition(PLAYERp pp)
pp->InventorySelectionBox->x = x - 5;
pp->InventorySelectionBox->y = y - 5;
for (id = InventoryData; id->Name; id++, inv++)
for (id = InventoryData; id->Name && inv < MAX_INVENTORY; id++, inv++)
{
x = InventoryBarXpos[gs.BorderNum] + (inv * INVENTORY_ICON_WIDTH);
y = InventoryBarYpos[gs.BorderNum];
@ -960,8 +945,7 @@ void (*InventoryDisplayString)(PLAYERp, short, short, short, const char *);
#define INVENTORY_STATE_XOFF 19
#define INVENTORY_STATE_YOFF 1
void
PlayerUpdateInventory(PLAYERp pp, short InventoryNum)
void PlayerUpdateInventory(PLAYERp pp, short InventoryNum)
{
USERp u = User[pp->PlayerSprite];
short w,h;
@ -974,9 +958,13 @@ PlayerUpdateInventory(PLAYERp pp, short InventoryNum)
PANEL_SPRITEp psp;
// Go translucent if used
for (id = InventoryData; id->Name; id++, inv++)
for (id = InventoryData; id->Name && inv < MAX_INVENTORY; id++, inv++)
{
psp = pp->InventorySprite[inv];
if (!psp)
continue;
if (!pp->InventoryAmount[inv])
{
//SET(psp->flags, PANF_TRANSLUCENT);
@ -1043,8 +1031,7 @@ PlayerUpdateInventory(PLAYERp pp, short InventoryNum)
}
}
void
PlayerUpdateInventoryPercent(PLAYERp pp)
void PlayerUpdateInventoryPercent(PLAYERp pp)
{
USERp u = User[pp->PlayerSprite];
short x,y;
@ -1065,8 +1052,7 @@ PlayerUpdateInventoryPercent(PLAYERp pp)
}
}
void
PlayerUpdateInventoryPic(PLAYERp pp)
void PlayerUpdateInventoryPic(PLAYERp pp)
{
USERp u = User[pp->PlayerSprite];
PANEL_SPRITEp psp;
@ -1084,8 +1070,7 @@ PlayerUpdateInventoryPic(PLAYERp pp)
psp->scale = id->Scale;
}
void
PlayerUpdateInventoryState(PLAYERp pp)
void PlayerUpdateInventoryState(PLAYERp pp)
{
USERp u = User[pp->PlayerSprite];
short x,y;

View file

@ -44,7 +44,7 @@ typedef struct
PANEL_STATEp State;
short DecPerSec;
short MaxInv;
long Scale;
int Scale;
short Flags;
} INVENTORY_DATA, *INVENTORY_DATAp;

View file

@ -276,7 +276,7 @@ void operatefta(void)
int conbot, conbotgoal;
char con_quote[MAXCONQUOTES][256];
void addconquote(char *daquote)
void addconquote(const char *daquote)
{
int i;

View file

@ -78,8 +78,7 @@ extern ParentalStruct aVoxelArray[MAXTILES];
/////////////////////////////////////////////////////
// SpawnWallSound
/////////////////////////////////////////////////////
void
SpawnWallSound(short sndnum, short i)
void SpawnWallSound(short sndnum, short i)
{
short SpriteNum;
vec3_t mid;
@ -315,8 +314,7 @@ JS_SpriteSetup(void)
/////////////////////////////////////////////////////
// Initialize the mirrors
/////////////////////////////////////////////////////
void
JS_InitMirrors(void)
void JS_InitMirrors(void)
{
short startwall, endwall, dasector;
int i, j, k, s, dax, day, daz, dax2, day2;
@ -483,7 +481,6 @@ JS_InitMirrors(void)
/////////////////////////////////////////////////////
// Draw a 3d screen to a specific tile
/////////////////////////////////////////////////////
#if 1
void drawroomstotile(int daposx, int daposy, int daposz,
short daang, int dahoriz, short dacursectnum, short tilenume)
{
@ -501,94 +498,6 @@ void drawroomstotile(int daposx, int daposy, int daposz,
tileInvalidate(tilenume, -1, -1);
}
#else
void
drawroomstotile(int daposx, int daposy, int daposz,
short daang, int dahoriz, short dacursectnum, short tilenume)
{
int i, j, k, bakchainnumpages, bakvidoption;
intptr_t bakframeplace;
vec2_t bakwindowxy1, bakwindowxy2;
int xsiz, ysiz;
char *ptr1, *ptr2;
// DRAWROOMS TO TILE BACKUP&SET CODE
xsiz = tilesiz[tilenume].x;
ysiz = tilesiz[tilenume].y;
// bakchainnumpages = chainnumpages;
bakchainnumpages = numpages;
// chainnumpages = 0;
numpages = 0;
bakvidoption = vidoption;
vidoption = 1;
if (waloff[tilenume] == 0)
loadtile(tilenume);
bakframeplace = frameplace;
frameplace = waloff[tilenume];
bakwindowxy1 = windowxy1;
bakwindowxy2 = windowxy2;
setview(0, 0, xsiz - 1, ysiz - 1);
setvlinebpl(xsiz);
j = 0;
for (i = 0; i <= ysiz; i++)
{
ylookup[i] = j, j += xsiz;
}
// DRAWS TO TILE HERE
drawrooms(daposx, daposy, daposz, daang, dahoriz, dacursectnum + MAXSECTORS);
analyzesprites(daposx, daposy, daposz, FALSE);
renderDrawMasks();
setviewback();
// ROTATE TILE (supports square tiles only for rotation part)
if (xsiz == ysiz)
{
k = (xsiz << 1);
for (i = xsiz - 1; i >= 0; i--)
{
ptr1 = (char *)(waloff[tilenume] + i * (xsiz + 1));
ptr2 = ptr1;
if ((i & 1) != 0)
{
ptr1--;
ptr2 -= xsiz;
swapchar(ptr1, ptr2);
}
for (j = (i >> 1) - 1; j >= 0; j--)
{
ptr1 -= 2;
ptr2 -= k;
swapchar2(ptr1, ptr2, xsiz);
// swapchar(ptr1,ptr2);
// swapchar(ptr1+1,ptr2+xsiz);
}
}
}
// DRAWROOMS TO TILE RESTORE CODE
setview(bakwindowxy1.x, bakwindowxy1.y, bakwindowxy2.x, bakwindowxy2.y);
// chainnumpages = bakchainnumpages;
numpages = bakchainnumpages;
vidoption = bakvidoption;
frameplace = bakframeplace;
j = 0;
// if (chainnumpages >= 2)
if (numpages >= 2)
{
for (i = 0; i <= ysiz; i++)
ylookup[i] = j, j += (xdim >> 2);
}
else
{
for (i = 0; i <= ysiz; i++)
ylookup[i] = j, j += xdim;
}
setvlinebpl(ylookup[1]);
}
#endif
void
JS_ProcessEchoSpot()
@ -648,7 +557,7 @@ JS_DrawMirrors(PLAYERp pp, int tx, int ty, int tz, short tpang, int tphoriz)
char ch, *ptr, *ptr2, *ptr3, *ptr4;
char tvisibility, palok;
// long tx, ty, tz, tpang; // Interpolate so mirror doesn't
// int tx, ty, tz, tpang; // Interpolate so mirror doesn't
// drift!
SWBOOL bIsWallMirror = FALSE;
@ -1065,8 +974,7 @@ DoAutoSize(uspritetype * tspr)
// Rotation angles for sprites
short rotang = 0;
void
JAnalyzeSprites(uspritetype * tspr)
void JAnalyzeSprites(uspritetype * tspr)
{
int i, currsprite;

View file

@ -1,87 +0,0 @@
//-------------------------------------------------------------------------
/*
Copyright (C) 1997, 2005 - 3D Realms Entertainment
This file is part of Shadow Warrior version 1.2
Shadow Warrior is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Original Source: 1997 - Frank Maddin and Jim Norwood
Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms
*/
//-------------------------------------------------------------------------
#include "ns.h"
#include "build.h"
#include "mytypes.h"
#include "keys.h"
#include "names2.h"
//#include "panel.h"
#include "game.h"
BEGIN_SW_NS
// macros this function needs
//#define MK_FP(seg,ofs) ((void _seg *)(seg)+(void near *)(ofs))
//#define PokeByte(a,b,c) (*((char far *)MK_FP((a),(b)))=(char)(c))
//#if DEBUG
void
PokeStringMono(uint8_t Attr, uint8_t* String)
{
fprintf(stderr,"MONO: %s\n",String);
#if 0
// Scrolls the monochrome display up one line, then prints the
// string with the desired attribute on the bottom line.
// EXAMPLE: PokeStringMono(MDA_NORMAL, "Hello, world.");
uint8_t* Src, Dest;
int32_t* s,d;
static char MonoBuf[4000];
#define BASE (MonoBuf)
#define LINE_SIZE 160
#define LINE_OFFSET(num) ((80*2)*(num))
// First scroll the screen up one line.
// copy lines 1-24 up to 0
s = (int32_t*)(BASE + LINE_SIZE);
d = (int32_t*)BASE;
memmove(d,s,LINE_OFFSET(24));
// clear bottom line
Dest = BASE + LINE_OFFSET(24);
//memset(Dest,0,LINE_SIZE);
memset(Dest,'.',LINE_SIZE);
// Now print the string on the bottom line.
Src = String;
Dest = BASE + LINE_OFFSET(24);
while (*Src)
{
*Dest++ = *Src++;
*Dest++ = Attr;
}
memcpy((char *)0xB0000, MonoBuf, sizeof(MonoBuf));
#endif
}
//#endif
END_SW_NS

View file

@ -1944,8 +1944,7 @@ static char lg_xlat_num[] = {0,1,2,3,4,5,6,7,8,9};
#define FONT_LARGE_ALPHA 3706
#define FONT_LARGE_DIGIT 3732
void
MNU_MeasureStringLarge(const char *string, short *w, short *h)
void MNU_MeasureStringLarge(const char *string, short *w, short *h)
{
short ndx, width, height;
char c;
@ -1987,8 +1986,7 @@ MNU_MeasureStringLarge(const char *string, short *w, short *h)
////////////////////////////////////////////////
// Draw a string using a graphic font
////////////////////////////////////////////////
void
MNU_DrawStringLarge(short x, short y, const char *string)
void MNU_DrawStringLarge(short x, short y, const char *string)
{
int ndx, offset;
char c;
@ -2027,8 +2025,7 @@ MNU_DrawStringLarge(short x, short y, const char *string)
////////////////////////////////////////////////
// Measure the pixel width of a graphic string
////////////////////////////////////////////////
void
MNU_MeasureString(const char *string, short *w, short *h)
void MNU_MeasureString(const char *string, short *w, short *h)
{
short ndx, width, height;
char c;
@ -2068,8 +2065,7 @@ MNU_MeasureString(const char *string, short *w, short *h)
//
// MenuTextShade and MenuDrawFlags
////////////////////////////////////////////////
void
MNU_DrawString(short x, short y, const char *string, short shade, short pal)
void MNU_DrawString(short x, short y, const char *string, short shade, short pal)
{
int ndx, offset;
char c;
@ -2131,8 +2127,7 @@ MNU_DrawString(short x, short y, char *string)
////////////////////////////////////////////////
// Measure the pixel width of a small font string
////////////////////////////////////////////////
void
MNU_MeasureSmallString(const char *string, short *w, short *h)
void MNU_MeasureSmallString(const char *string, short *w, short *h)
{
short ndx, width, height;
char c;
@ -2164,8 +2159,7 @@ MNU_MeasureSmallString(const char *string, short *w, short *h)
////////////////////////////////////////////////
// Draw a string using a small graphic font
////////////////////////////////////////////////
void
MNU_DrawSmallString(short x, short y, const char *string, short shade, short pal)
void MNU_DrawSmallString(short x, short y, const char *string, short shade, short pal)
{
int ndx;
char c;
@ -2199,8 +2193,7 @@ MNU_DrawSmallString(short x, short y, const char *string, short shade, short pal
// Get an input string from user using small font
////////////////////////////////////////////////
signed char
MNU_InputSmallString(char *name, short pix_width)
signed char MNU_InputSmallString(char *name, short pix_width)
{
char ch;
short w, h;
@ -2274,8 +2267,7 @@ MNU_InputSmallString(char *name, short pix_width)
////////////////////////////////////////////////
// Draw dialog text on screen
////////////////////////////////////////////////
static SWBOOL
MNU_Dialog(void)
static SWBOOL MNU_Dialog(void)
{
short ndx, linecnt, w[MAXDIALOG], h, x, y;
@ -2312,8 +2304,7 @@ MNU_Dialog(void)
// Get an input string from user
////////////////////////////////////////////////
signed char
MNU_InputString(char *name, short pix_width)
signed char MNU_InputString(char *name, short pix_width)
{
char ch;
short w, h;
@ -2397,8 +2388,7 @@ void LoadSaveMsg(const char *msg)
// I'm figuring it need to do the following:
// . Load the game if there is one by calling: MNU_LoadGameCustom.
////////////////////////////////////////////////
SWBOOL
MNU_GetLoadCustom(void)
SWBOOL MNU_GetLoadCustom(void)
{
short load_num;
@ -2464,8 +2454,7 @@ MNU_GetLoadCustom(void)
// . Call MNU_GetInput to allow string input of description.
// . Save the game if there is one by calling: MNU_SaveGameCustom.
////////////////////////////////////////////////
SWBOOL
MNU_GetSaveCustom(void)
SWBOOL MNU_GetSaveCustom(void)
{
short save_num;
extern SWBOOL InMenuLevel, LoadGameOutsideMoveLoop;
@ -2518,8 +2507,7 @@ MNU_GetSaveCustom(void)
// This function gets called each frame by DrawMenus
////////////////////////////////////////////////
static SWBOOL
MNU_DrawLoadSave(short game_num)
static SWBOOL MNU_DrawLoadSave(short game_num)
{
// screen border
rotatesprite(SS_XSTART << 16, SS_YSTART << 16, MZ, 0, pic_loadsavescreen,
@ -2539,8 +2527,8 @@ MNU_DrawLoadSave(short game_num)
static char SaveGameInfo1[80];
static char SaveGameInfo2[80];
SWBOOL
MNU_LoadSaveMove(UserCall call, MenuItem_p item)
SWBOOL MNU_LoadSaveMove(UserCall call, MenuItem_p item)
{
short i;
short game_num;
@ -2648,8 +2636,7 @@ MNU_LoadSaveMove(UserCall call, MenuItem_p item)
return TRUE;
}
SWBOOL
MNU_LoadSaveDraw(UserCall call, MenuItem_p item)
SWBOOL MNU_LoadSaveDraw(UserCall call, MenuItem_p item)
{
short i;
short game_num;
@ -2715,8 +2702,7 @@ MNU_LoadSaveDraw(UserCall call, MenuItem_p item)
return TRUE;
}
SWBOOL
MNU_ShareWareCheck(MenuItem *item)
SWBOOL MNU_ShareWareCheck(MenuItem *item)
{
if (SW_SHAREWARE)
{
@ -2726,8 +2712,7 @@ MNU_ShareWareCheck(MenuItem *item)
return TRUE;
}
SWBOOL
MNU_CheckUserMap(MenuItem *item)
SWBOOL MNU_CheckUserMap(MenuItem *item)
{
if (UserMapName[0] == '\0')
RESET(item->flags, mf_disabled);
@ -2736,8 +2721,7 @@ MNU_CheckUserMap(MenuItem *item)
return TRUE;
}
SWBOOL
MNU_ShareWareMessage(MenuItem *item)
SWBOOL MNU_ShareWareMessage(MenuItem *item)
{
const char *extra_text;
short w,h;
@ -2767,8 +2751,7 @@ MNU_ShareWareMessage(MenuItem *item)
return TRUE;
}
SWBOOL
MNU_SaveGameCheck(MenuItem *item)
SWBOOL MNU_SaveGameCheck(MenuItem *item)
{
extern SWBOOL InMenuLevel;
extern SWBOOL DemoMode;
@ -2799,8 +2782,7 @@ MNU_SaveGameCheck(MenuItem *item)
return TRUE;
}
SWBOOL
MNU_TenCheck(MenuItem *item)
SWBOOL MNU_TenCheck(MenuItem *item)
{
if (CommEnabled || numplayers > 1)
{
@ -2811,8 +2793,7 @@ MNU_TenCheck(MenuItem *item)
return TRUE;
}
SWBOOL
MNU_LoadGameCheck(MenuItem *item)
SWBOOL MNU_LoadGameCheck(MenuItem *item)
{
if (0) // JBF: Until we fix the symbol table dilemma, loading is off limits
@ -2830,8 +2811,7 @@ MNU_LoadGameCheck(MenuItem *item)
return TRUE;
}
SWBOOL
MNU_StatCheck(MenuItem *item)
SWBOOL MNU_StatCheck(MenuItem *item)
{
if (CommEnabled || numplayers > 1)
{
@ -2842,8 +2822,7 @@ MNU_StatCheck(MenuItem *item)
return TRUE;
}
SWBOOL
MNU_HurtTeammateCheck(MenuItem *item)
SWBOOL MNU_HurtTeammateCheck(MenuItem *item)
{
switch (gs.NetGameType+1)
{
@ -2864,8 +2843,7 @@ MNU_HurtTeammateCheck(MenuItem *item)
return TRUE;
}
SWBOOL
MNU_TeamPlayCheck(MenuItem *item)
SWBOOL MNU_TeamPlayCheck(MenuItem *item)
{
switch (gs.NetGameType+1)
{
@ -2881,8 +2859,7 @@ MNU_TeamPlayCheck(MenuItem *item)
return TRUE;
}
SWBOOL
MNU_CoopPlayCheck(MenuItem *item)
SWBOOL MNU_CoopPlayCheck(MenuItem *item)
{
switch (gs.NetGameType+1)
{
@ -2906,8 +2883,7 @@ MNU_TeamPlayChange(void)
return TRUE;
}
SWBOOL
MNU_MouseCheck(MenuItem *item)
SWBOOL MNU_MouseCheck(MenuItem *item)
{
if (!CONTROL_MousePresent)
{
@ -2956,15 +2932,13 @@ MNU_MusicCheck(MenuItem *item)
return TRUE;
}
SWBOOL
MNU_FxCheck(MenuItem *item)
SWBOOL MNU_FxCheck(MenuItem *item)
{
RESET(item->flags, mf_disabled);
return TRUE;
}
SWBOOL
MNU_MusicFxCheck(MenuItem *item)
SWBOOL MNU_MusicFxCheck(MenuItem *item)
{
RESET(item->flags, mf_disabled);
return TRUE;
@ -2973,8 +2947,7 @@ MNU_MusicFxCheck(MenuItem *item)
////////////////////////////////////////////////
// Do a toggle button
////////////////////////////////////////////////
void
MNU_DoButton(MenuItem_p item, SWBOOL draw)
void MNU_DoButton(MenuItem_p item, SWBOOL draw)
{
int x, y;
SWBOOL state;
@ -3708,8 +3681,7 @@ MNU_SetupMenu(void)
////////////////////////////////////////////////
// Draw an item
////////////////////////////////////////////////
static void
MNU_ClearFlags(MenuGroup *node)
static void MNU_ClearFlags(MenuGroup * node)
{
MenuItem *i;
@ -3727,8 +3699,7 @@ MNU_ClearFlags(MenuGroup *node)
////////////////////////////////////////////////
// Pop a group off the menu stack
////////////////////////////////////////////////
static void
MNU_PopGroup(void)
static void MNU_PopGroup(void)
{
if (!menuarrayptr)
return;
@ -3742,8 +3713,7 @@ MNU_PopGroup(void)
////////////////////////////////////////////////
// Push a group on to the menu stack
////////////////////////////////////////////////
static void
MNU_PushGroup(MenuGroup *node)
static void MNU_PushGroup(MenuGroup * node)
{
if (menuarrayptr == MaxLayers - 1)
return;
@ -3756,15 +3726,13 @@ MNU_PushGroup(MenuGroup *node)
////////////////////////////////////////////////
// Setup a new menu subgroup
////////////////////////////////////////////////
static void
MNU_SetupGroup(void)
static void MNU_SetupGroup(void)
{
MNU_SelectItem(currentmenu, currentmenu->cursor, FALSE);
MNU_DrawMenu();
}
static void
MNU_ItemPreProcess(MenuGroup *group)
static VOID MNU_ItemPreProcess(MenuGroup * group)
{
MenuItem *item;
@ -3780,8 +3748,7 @@ MNU_ItemPreProcess(MenuGroup *group)
}
}
void
MNU_ItemPostProcess(MenuGroup *group)
void MNU_ItemPostProcess(MenuGroup *group)
{
MenuItem *item;
int zero = 0;
@ -3800,8 +3767,7 @@ MNU_ItemPostProcess(MenuGroup *group)
////////////////////////////////////////////////
// Go to next menu subgroup
////////////////////////////////////////////////
static void
MNU_DownLevel(MenuGroup *group)
static void MNU_DownLevel(MenuGroup * group)
{
if (!group)
@ -3829,8 +3795,7 @@ MNU_DownLevel(MenuGroup *group)
////////////////////////////////////////////////
// Go to previous menu subgroup
////////////////////////////////////////////////
static void
MNU_UpLevel(void)
static void MNU_UpLevel(void)
{
int zero = 0;
static int handle1=0;
@ -3854,8 +3819,8 @@ MNU_UpLevel(void)
////////////////////////////////////////////////
// Do a menu item action
////////////////////////////////////////////////
static void
MNU_DoItem(void)
static void MNU_DoItem(void)
{
MenuItem *item;
@ -3896,8 +3861,7 @@ MNU_DoItem(void)
////////////////////////////////////////////////
// Draw an item icon or cursor
////////////////////////////////////////////////
static void
MNU_DrawItemIcon(MenuItem *item)
static void MNU_DrawItemIcon(MenuItem * item)
{
//void BorderRefreshClip(PLAYERp pp, short x, short y, short x2, short y2);
int x = item->x, y = item->y;
@ -3927,8 +3891,7 @@ MNU_DrawItemIcon(MenuItem *item)
////////////////////////////////////////////////
// Draw an item
////////////////////////////////////////////////
static void
MNU_DrawItem(MenuItem *item)
static void MNU_DrawItem(MenuItem * item)
{
char *ptr;
short px, py;
@ -3970,8 +3933,7 @@ MNU_DrawItem(MenuItem *item)
////////////////////////////////////////////////
// Draw the menu contents
////////////////////////////////////////////////
static void
MNU_DrawMenuContents(void)
static void MNU_DrawMenuContents(void)
{
MenuItem *item;
short w,h;
@ -4035,8 +3997,7 @@ MNU_DrawMenuContents(void)
////////////////////////////////////////////////
// Draw the menu
////////////////////////////////////////////////
void
MNU_DrawMenu(void)
void MNU_DrawMenu(void)
{
if (cust_callback != NULL)
{
@ -4053,8 +4014,7 @@ MNU_DrawMenu(void)
////////////////////////////////////////////////
// Select a menu item
////////////////////////////////////////////////
void
MNU_SelectItem(MenuGroup *group, short index, SWBOOL draw)
void MNU_SelectItem(MenuGroup * group, short index, SWBOOL draw)
{
MenuItem *item;
@ -4068,6 +4028,7 @@ MNU_SelectItem(MenuGroup *group, short index, SWBOOL draw)
group->cursor = index;
item = &group->items[group->cursor];
item->flags |= mf_selected;
if (draw)
MNU_DrawItem(item);
@ -4076,8 +4037,7 @@ MNU_SelectItem(MenuGroup *group, short index, SWBOOL draw)
////////////////////////////////////////////////
// Toggle a menu radio button on/off
////////////////////////////////////////////////
static void
MNU_PushItem(MenuItem *item, SWBOOL draw)
static void MNU_PushItem(MenuItem * item, SWBOOL draw)
{
if (item->type != mt_button)
return;
@ -4091,8 +4051,7 @@ MNU_PushItem(MenuItem *item, SWBOOL draw)
////////////////////////////////////////////////
// Go to next item on menu
////////////////////////////////////////////////
static void
MNU_NextItem(void)
static void MNU_NextItem(void)
{
MenuTag type;
MenuFlags flag;
@ -4115,8 +4074,7 @@ MNU_NextItem(void)
////////////////////////////////////////////////
// Go to previous item on menu
////////////////////////////////////////////////
static void
MNU_PrevItem(void)
static void MNU_PrevItem(void)
{
MenuTag type;
MenuFlags flag;
@ -4135,8 +4093,7 @@ MNU_PrevItem(void)
////////////////////////////////////////////////
// Find hotkey press on current menu, if any.
////////////////////////////////////////////////
static SWBOOL
MNU_DoHotkey(void)
static SWBOOL MNU_DoHotkey(void)
{
MenuItem_p item;
short index;
@ -4160,8 +4117,7 @@ MNU_DoHotkey(void)
////////////////////////////////////////////////
// Setup Menus
////////////////////////////////////////////////
void
SetupMenu(void)
void SetupMenu(void)
{
if (!UsingMenus && !ConPanel) // Doing this check for multiplay
// menus
@ -4280,8 +4236,7 @@ void MNU_DoMenu(CTLType type, PLAYERp pp)
////////////////////////////////////////////////
// Checks to see if we should be in menus
////////////////////////////////////////////////
void
MNU_CheckForMenus(void)
void MNU_CheckForMenus(void)
{
extern SWBOOL GamePaused;
@ -4305,8 +4260,7 @@ MNU_CheckForMenus(void)
}
}
void
MNU_CheckForMenusAnyKey(void)
void MNU_CheckForMenusAnyKey(void)
{
if (UsingMenus)
{
@ -4386,8 +4340,7 @@ unsigned char palette_data[256][3]; // Global palette array
// WaitForVsync
// Waits for a vertical retrace to occur. If one is in progress, it waits for the next one.
/////////////////////////////////////////////////
void
WaitForVsync(void)
void WaitForVsync(void)
{
while (inp(VGA_INPUT_STATUS_1) & VGA_VSYNC_MASK) ;
// Retrace in progress, wait.
@ -4396,8 +4349,7 @@ WaitForVsync(void)
while (!inp(VGA_INPUT_STATUS_1) & VGA_VSYNC_MASK) ;
}
void
Get_Palette(unsigned char *pal)
void Get_Palette(unsigned char *pal)
{
int i;
@ -4405,8 +4357,8 @@ Get_Palette(unsigned char *pal)
for (i = 0; i < 768; i++)
pal[i] = inp(PALETTE_DATA);
}
void
Set_Palette(unsigned char *buff)
void Set_Palette(unsigned char *buff)
{
int i;
@ -4429,8 +4381,7 @@ Set_Palette(unsigned char *buff)
// Heres some temp timer junk for this routine. Replace it with game timer stuff later.
//unsigned int *clock = (unsigned int *)0x046C;
void
Fade_Timer(int clicks)
void Fade_Timer(int clicks)
{
// unsigned int now;
int now;
@ -4440,8 +4391,7 @@ Fade_Timer(int clicks)
while (abs((int32_t) totalclock - now) < clicks) handleevents();
}
void
FadeIn(unsigned char startcolor, unsigned int clicks)
void FadeIn(unsigned char startcolor, unsigned int clicks)
{
int i, palreg, usereg, tmpreg1 = 0, tmpreg2 = 0;
RGB_color color;
@ -4498,8 +4448,7 @@ FadeIn(unsigned char startcolor, unsigned int clicks)
}
}
void
FadeOut(unsigned char targetcolor, unsigned int clicks)
void FadeOut(unsigned char targetcolor, unsigned int clicks)
{
int i, palreg, usereg = 0, tmpreg1 = 0, tmpreg2 = 0;
RGB_color color;
@ -4601,8 +4550,7 @@ unsigned char ppalette[MAX_SW_PLAYERS_REG][768];
// Set the amount of redness for damage
// the player just took
//////////////////////////////////////////
void
SetFadeAmt(PLAYERp pp, short damage, unsigned char startcolor)
void SetFadeAmt(PLAYERp pp, short damage, unsigned char startcolor)
{
int palreg, usereg = 0, tmpreg1 = 0, tmpreg2 = 0;
short fadedamage=0;
@ -4721,8 +4669,7 @@ SetFadeAmt(PLAYERp pp, short damage, unsigned char startcolor)
// Do the screen reddness based on damage
//////////////////////////////////////////
#define MAXFADETICS 5
void
DoPaletteFlash(PLAYERp pp)
void DoPaletteFlash(PLAYERp pp)
{
int i, palreg, tmpreg1 = 0, tmpreg2 = 0;
unsigned char *pal_ptr = &ppalette[screenpeek][0];

View file

@ -277,7 +277,7 @@ typedef struct MenuGroup
short cursor; // This is the current menu item the
// cursor is resting on.
} MenuGroup, *MenuGroup_p;
} *MenuGroup_p;
// Custom Routine Prototypes ////////////////////////////////////////////////////////////////////

View file

@ -456,6 +456,7 @@ enum STAT_ENUMS
#define COOLG_PAIN_R4 COOLG_PAIN_R0 //+ (COOLIE_PAIN_FRAMES * 4)
#define COOLIE_DEAD_NOHEAD 1440
#define COOLIE_DEAD_HEAD 4267
#define COOLIE_DIE 4260
#define COOLIE_DEAD 4268
@ -657,6 +658,7 @@ enum STAT_ENUMS
#define NINJA_SLICED 4227
#define NINJA_DEAD_SLICED NINJA_SLICED+9
#define NINJA_SLICED_HACK 4211
#define NINJA_Head_FRAMES 1
#define NINJA_Head_R0 1142

View file

@ -140,15 +140,9 @@ void netsendpacket(int ind, uint8_t* buf, int len)
{
if ((unsigned)len > sizeof(packbuf))
{
buildprintf("netsendpacket(): packet length > %d!\n",(int)sizeof(packbuf));
len = sizeof(packbuf);
}
buildprintf("netsendpacket() sends proxy to %d\nPlayerIndex=%d Contents:",connecthead,ind);
for (i=0; i<len; i++)
buildprintf(" %02x", buf[i]);
buildputs("\n");
prx->PacketType = PACKET_TYPE_PROXY;
prx->PlayerIndex = (uint8_t)ind;
memcpy(&prx[1], buf, len); // &prx[1] == (char*)prx + sizeof(PACKET_PROXY)
@ -160,10 +154,6 @@ void netsendpacket(int ind, uint8_t* buf, int len)
//sendpacket(ind, buf, len);
buildprintf("netsendpacket() sends normal to %d\nContents:",ind);
for (i=0; i<len; i++)
buildprintf(" %02x", buf[i]);
buildputs("\n");
}
void netbroadcastpacket(uint8_t* buf, int len)
@ -177,14 +167,9 @@ void netbroadcastpacket(uint8_t* buf, int len)
{
if ((unsigned)len > sizeof(packbuf))
{
buildprintf("netbroadcastpacket(): packet length > %d!\n",(int)sizeof(packbuf));
len = sizeof(packbuf);
}
buildprintf("netbroadcastpacket() sends proxy to %d\nPlayerIndex=255 Contents:",connecthead);
for (i=0; i<len; i++)
buildprintf(" %02x", buf[i]);
buildputs("\n");
prx->PacketType = PACKET_TYPE_PROXY;
prx->PlayerIndex = (uint8_t)(-1);
@ -218,20 +203,12 @@ int netgetpacket(int *ind, uint8_t* buf)
{
if (len > 0)
{
buildprintf("netgetpacket() gets normal from %d\nContents:",*ind);
for (i=0; i<len; i++)
buildprintf(" %02x", buf[i]);
buildputs("\n");
}
return len;
}
prx = (PACKET_PROXYp)buf;
buildprintf("netgetpacket() got proxy from %d\nPlayerIndex=%d Contents:",*ind,prx->PlayerIndex);
for (i=0; i<len-(int)sizeof(PACKET_PROXY); i++)
buildprintf(" %02x", *(((char *)&prx[1])+i));
buildputs("\n");
if (myconnectindex == connecthead)
{
@ -1606,7 +1583,6 @@ getpackets(void)
break;
case PACKET_TYPE_PROXY:
buildputs("getpackets(): nested proxy packets!?\n");
break;
default:

View file

@ -24,6 +24,12 @@ Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms
*/
//-------------------------------------------------------------------------
#include "ns.h"
// Added Ninja Sliced fix
// Fixed Ninja sliced dead and rotation
// Added s_NinjaDieSlicedHack[]
// Fixed Saved Game
// Added GrabThroat Hack
//
#include "build.h"
@ -41,6 +47,7 @@ Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms
#include "actor.h"
#include "ninja.h"
#include "sprite.h"
#include "swcvar.h"
BEGIN_SW_NS
@ -1503,6 +1510,22 @@ STATE s_NinjaDieSliced[] =
{NINJA_SLICED + 9, NINJA_DIESLICED_RATE, DoActorDebris, &s_NinjaDieSliced[11]},
};
STATE s_NinjaDieSlicedHack[] =
{
{NINJA_SLICED_HACK + 0, NINJA_DIESLICED_RATE*6, NullNinja, &s_NinjaDieSlicedHack[1]},
{NINJA_SLICED_HACK + 1, NINJA_DIESLICED_RATE, NullNinja, &s_NinjaDieSlicedHack[2]},
{NINJA_SLICED_HACK + 2, NINJA_DIESLICED_RATE, NullNinja, &s_NinjaDieSlicedHack[3]},
{NINJA_SLICED_HACK + 3, NINJA_DIESLICED_RATE, NullNinja, &s_NinjaDieSlicedHack[4]},
{NINJA_SLICED_HACK + 4, NINJA_DIESLICED_RATE-1, NullNinja, &s_NinjaDieSlicedHack[5]},
{NINJA_SLICED_HACK + 4, NINJA_DIESLICED_RATE-2, NullNinja, &s_NinjaDieSlicedHack[6]},
{NINJA_SLICED_HACK + 5, NINJA_DIESLICED_RATE-3, NullNinja, &s_NinjaDieSlicedHack[7]},
{NINJA_SLICED_HACK + 5, NINJA_DIESLICED_RATE-4, NullNinja, &s_NinjaDieSlicedHack[8]},
{NINJA_SLICED_HACK + 6, SF_QUICK_CALL , DoNinjaSpecial, &s_NinjaDieSlicedHack[9]},
{NINJA_SLICED_HACK + 6, NINJA_DIESLICED_RATE-5, NullNinja, &s_NinjaDieSlicedHack[10]},
{NINJA_SLICED_HACK + 7, SF_QUICK_CALL , QueueFloorBlood, &s_NinjaDieSlicedHack[11]},
{NINJA_SLICED_HACK + 7, NINJA_DIESLICED_RATE-6, DoActorDebris, &s_NinjaDieSlicedHack[11]},
};
STATE s_NinjaDead[] =
{
{NINJA_DIE + 5, NINJA_DIE_RATE, DoActorDebris, &s_NinjaDead[1]},
@ -1559,6 +1582,11 @@ STATEp sg_NinjaDieSliced[] =
s_NinjaDieSliced
};
STATEp sg_NinjaDieSlicedHack[] =
{
s_NinjaDieSlicedHack
};
STATEp sg_NinjaDead[] =
{
s_NinjaDead
@ -1997,6 +2025,9 @@ DoNinjaMove(short SpriteNum)
if (TEST(u->Flags2, SPR2_DYING))
{
if (sw_ninjahack)
NewStateGroup(SpriteNum, sg_NinjaHariKari);
else
NewStateGroup(SpriteNum, sg_NinjaGrabThroat);
return 0;
}
@ -2095,6 +2126,9 @@ int DoNinjaPain(short SpriteNum)
if (TEST(u->Flags2, SPR2_DYING))
{
if (sw_ninjahack)
NewStateGroup(SpriteNum, sg_NinjaHariKari);
else
NewStateGroup(SpriteNum, sg_NinjaGrabThroat);
return 0;
}

View file

@ -118,8 +118,7 @@ int ChangeWeapon(PLAYERp);
ANIMATOR InitFire;
int
NullAnimator(short SpriteNum)
int NullAnimator(short SpriteNum)
{
return 0;
}
@ -129,8 +128,7 @@ void pNullAnimator(PANEL_SPRITEp psp)
return;
}
PANEL_SPRITEp
pFindMatchingSprite(PLAYERp pp, int x, int y, short pri)
PANEL_SPRITEp pFindMatchingSprite(PLAYERp pp, int x, int y, short pri)
{
PANEL_SPRITEp nsp;
PANEL_SPRITEp psp=NULL, next;
@ -150,8 +148,7 @@ pFindMatchingSprite(PLAYERp pp, int x, int y, short pri)
return NULL;
}
PANEL_SPRITEp
pFindMatchingSpriteID(PLAYERp pp, short id, int x, int y, short pri)
PANEL_SPRITEp pFindMatchingSpriteID(PLAYERp pp, short id, int x, int y, short pri)
{
PANEL_SPRITEp nsp;
PANEL_SPRITEp psp=NULL, next;
@ -171,8 +168,7 @@ pFindMatchingSpriteID(PLAYERp pp, short id, int x, int y, short pri)
return NULL;
}
SWBOOL
pKillScreenSpiteIDs(PLAYERp pp, short id)
SWBOOL pKillScreenSpiteIDs(PLAYERp pp, short id)
{
PANEL_SPRITEp nsp=NULL;
PANEL_SPRITEp psp=NULL, next;
@ -194,8 +190,7 @@ pKillScreenSpiteIDs(PLAYERp pp, short id)
// Used to sprites in the view at correct aspect ratio and x,y location.
PANEL_SPRITEp
pSpawnFullViewSprite(PLAYERp pp, short pic, short pri, int x, int y)
PANEL_SPRITEp pSpawnFullViewSprite(PLAYERp pp, short pic, short pri, int x, int y)
{
PANEL_SPRITEp nsp;
@ -219,8 +214,7 @@ pSpawnFullViewSprite(PLAYERp pp, short pic, short pri, int x, int y)
// Used to display panel info at correct aspect ratio and x,y location on the
// status panel. Sprites will kill themselves after writing to all pages.
PANEL_SPRITEp
pSpawnFullScreenSprite(PLAYERp pp, short pic, short pri, int x, int y)
PANEL_SPRITEp pSpawnFullScreenSprite(PLAYERp pp, short pic, short pri, int x, int y)
{
PANEL_SPRITEp nsp;
@ -294,8 +288,7 @@ void ArmorCalc(int damage_amt, int *armor_damage, int *player_damage)
}
void
PlayerUpdateHealth(PLAYERp pp, short value)
void PlayerUpdateHealth(PLAYERp pp, short value)
{
USERp u = User[pp->PlayerSprite];
short x,y;
@ -421,8 +414,7 @@ PlayerUpdateHealth(PLAYERp pp, short value)
}
void
PlayerUpdateAmmo(PLAYERp pp, short UpdateWeaponNum, short value)
void PlayerUpdateAmmo(PLAYERp pp, short UpdateWeaponNum, short value)
{
USERp u = User[pp->PlayerSprite];
short x,y;
@ -488,8 +480,7 @@ PlayerUpdateAmmo(PLAYERp pp, short UpdateWeaponNum, short value)
DisplayPanelNumber(pp, x, y, pp->WpnAmmo[WeaponNum]);
}
void
PlayerUpdateWeaponSummary(PLAYERp pp, short UpdateWeaponNum)
void PlayerUpdateWeaponSummary(PLAYERp pp, short UpdateWeaponNum)
{
USERp u = User[pp->PlayerSprite];
short x,y;
@ -568,8 +559,7 @@ void PlayerUpdateWeaponSummaryAll(PLAYERp pp)
}
}
void
PlayerUpdateWeapon(PLAYERp pp, short WeaponNum)
void PlayerUpdateWeapon(PLAYERp pp, short WeaponNum)
{
USERp u = User[pp->PlayerSprite];
@ -586,8 +576,7 @@ PlayerUpdateWeapon(PLAYERp pp, short WeaponNum)
PlayerUpdateWeaponSummaryAll(pp);
}
void
PlayerUpdateKills(PLAYERp pp, short value)
void PlayerUpdateKills(PLAYERp pp, short value)
{
USERp u = User[pp->PlayerSprite];
@ -635,8 +624,7 @@ PlayerUpdateKills(PLAYERp pp, short value)
DisplayFragNumbers(pp);
}
void
PlayerUpdateArmor(PLAYERp pp, short value)
void PlayerUpdateArmor(PLAYERp pp, short value)
{
USERp u = User[pp->PlayerSprite];
short x,y;
@ -671,8 +659,7 @@ PlayerUpdateArmor(PLAYERp pp, short value)
}
void
PlayerUpdateKeys(PLAYERp pp)
void PlayerUpdateKeys(PLAYERp pp)
{
#define PANEL_KEYS_BOX_X 276
#define PANEL_KEYS_XOFF 0
@ -754,8 +741,7 @@ PlayerUpdateKeys(PLAYERp pp)
}
}
void
PlayerUpdateTimeLimit(PLAYERp pp)
void PlayerUpdateTimeLimit(PLAYERp pp)
{
USERp u = User[pp->PlayerSprite];
short x,y;
@ -781,8 +767,7 @@ PlayerUpdateTimeLimit(PLAYERp pp)
DisplaySummaryString(pp, PANEL_KEYS_BOX_X+1, PANEL_BOX_Y+6, 0, 0, ds);
}
void
PlayerUpdatePanelInfo(PLAYERp pp)
void PlayerUpdatePanelInfo(PLAYERp pp)
{
USERp u = User[pp->PlayerSprite];
int i;
@ -790,6 +775,9 @@ PlayerUpdatePanelInfo(PLAYERp pp)
if (Prediction)
return;
if (UsingMenus)
return;
PlayerUpdateHealth(pp, 0);
PlayerUpdateInventory(pp, pp->InventoryNum);
PlayerUpdateAmmo(pp, u->WeaponNum, 0);
@ -800,8 +788,7 @@ PlayerUpdatePanelInfo(PLAYERp pp)
PlayerUpdateTimeLimit(pp);
}
int
WeaponOperate(PLAYERp pp)
int WeaponOperate(PLAYERp pp)
{
short weapon;
int DoPlayerSpriteReset(short SpriteNum);
@ -896,6 +883,7 @@ WeaponOperate(PLAYERp pp)
if (TEST(pp->Flags, PF_TWO_UZI))
{
pp->WpnUziType++;
PlaySound(DIGI_UZI_UP, &pp->posx, &pp->posy, &pp->posz, v3df_follow);
if (pp->WpnUziType > 1)
pp->WpnUziType = 0;
}
@ -908,6 +896,7 @@ WeaponOperate(PLAYERp pp)
if (u->WeaponNum == WPN_MICRO)
{
pp->WpnRocketType++;
PlaySound(DIGI_ROCKET_UP, &pp->posx, &pp->posy, &pp->posz, v3df_follow);
if (pp->WpnRocketType > 2)
pp->WpnRocketType = 0;
if (pp->WpnRocketType == 2 && pp->WpnRocketNuke == 0)
@ -1017,11 +1006,19 @@ WeaponOperate(PLAYERp pp)
SWBOOL
WeaponOK(PLAYERp pp)
{
USERp u = User[pp->PlayerSprite];
USERp u;
short min_ammo, WeaponNum, FindWeaponNum;
static char wpn_order[] = {2,3,4,5,6,7,8,9,1,0};
unsigned wpn_ndx=0;
if ((unsigned)pp->PlayerSprite >= MAXSPRITES)
return(FALSE);
u = User[pp->PlayerSprite];
if (u == NULL)
return(FALSE);
// sword
if (DamageData[u->WeaponNum].max_ammo == -1)
return TRUE;
@ -1262,8 +1259,7 @@ void SpecialUziRetractFunc(PANEL_SPRITEp psp)
}
}
void
RetractCurWpn(PLAYERp pp)
void RetractCurWpn(PLAYERp pp)
{
// Retract old weapon
if (pp->CurWpn)
@ -6277,9 +6273,11 @@ pChopsWait(PANEL_SPRITEp psp)
}
}
void
ChopsSetRetract(PLAYERp pp)
void ChopsSetRetract(PLAYERp pp)
{
if (pp == NULL || pp->Chops == NULL)
return;
pSetState(pp->Chops, pp->Chops->RetractState);
}
@ -7450,6 +7448,7 @@ pDisplaySprites(PLAYERp pp)
break;
case STAR_REST:
case 2510:
if (!useDarts)
picnum = 2138;
else

View file

@ -6368,8 +6368,8 @@ char *KilledPlayerMessage(PLAYERp pp, PLAYERp killer)
{
#define MAX_KILL_NOTES 16
short rnd = STD_RANDOM_RANGE(MAX_KILL_NOTES);
char *p1 = pp->PlayerName;
char *p2 = killer->PlayerName;
const char *p1 = pp->PlayerName;
const char *p2 = killer->PlayerName;
if (pp->HitBy == killer->PlayerSprite)
{
@ -7511,14 +7511,20 @@ DoPlayerRun(PLAYERp pp)
}
int
void
PlayerStateControl(int16_t SpriteNum)
{
USERp u;
if ((unsigned)SpriteNum >= MAXSPRITES)
return;
// Convienience var
u = User[SpriteNum];
if (u == NULL)
return;
u->Tics += synctics;
// Skip states if too much time has passed
@ -7562,7 +7568,7 @@ PlayerStateControl(int16_t SpriteNum)
if (u->State->Animator)
(*u->State->Animator)(SpriteNum);
return 0;
return;
}
void
@ -7599,9 +7605,15 @@ MoveSkipSavePos(void)
{
TRAVERSE_SPRITE_STAT(headspritestat[stat], i, nexti)
{
if ((unsigned)i >= MAXSPRITES)
continue;
sp = &sprite[i];
u = User[i];
if (sp == NULL || u == NULL)
continue;
u->ox = sp->x;
u->oy = sp->y;
u->oz = sp->z;
@ -7618,9 +7630,13 @@ MoveSkipSavePos(void)
{
TRAVERSE_SPRITE_STAT(headspritestat[stat], i, nexti)
{
if ((unsigned)i >= MAXSPRITES)
continue;
sp = &sprite[i];
u = User[i];
if (sp == NULL || u == NULL)
continue;
u->ox = sp->x;
u->oy = sp->y;
u->oz = sp->z;

View file

@ -110,8 +110,7 @@ extern STATE s_NotRestored[];
OrgTileListP otlist[] = {&orgwalllist, &orgwalloverlist, &orgsectorceilinglist, &orgsectorfloorlist};
int
PanelSpriteToNdx(PLAYERp pp, PANEL_SPRITEp psprite)
int PanelSpriteToNdx(PLAYERp pp, PANEL_SPRITEp psprite)
{
short ndx = 0;
PANEL_SPRITEp psp=NULL, next=NULL;
@ -132,8 +131,7 @@ PanelSpriteToNdx(PLAYERp pp, PANEL_SPRITEp psprite)
}
PANEL_SPRITEp
PanelNdxToSprite(PLAYERp pp, int ndx)
PANEL_SPRITEp PanelNdxToSprite(PLAYERp pp, int ndx)
{
short count = 0;
PANEL_SPRITEp psp, next;
@ -176,6 +174,7 @@ int SaveSymDataInfo(MFILE_WRITE fil, void *ptr)
return 0;
}
static int SaveSymCodeInfo_raw(MFILE_WRITE fil, void *ptr)
{
savedcodesym sym;

View file

@ -154,7 +154,7 @@ void GetToken(SWBOOL crossline)
if (script_p >= scriptend_p)
{
if (!crossline)
buildprintf("Error: Line %i is incomplete\n",scriptline);
initprintf("Error: Line %i is incomplete\n",scriptline);
endofscript = TRUE;
return;
}
@ -168,14 +168,14 @@ skipspace:
if (script_p >= scriptend_p)
{
if (!crossline)
buildprintf("Error: Line %i is incomplete\n",scriptline);
initprintf("Error: Line %i is incomplete\n",scriptline);
endofscript = TRUE;
return;
}
if (*script_p++ == '\n')
{
if (!crossline)
buildprintf("Error: Line %i is incomplete\n",scriptline);
initprintf("Error: Line %i is incomplete\n",scriptline);
scriptline++;
}
}
@ -183,7 +183,7 @@ skipspace:
if (script_p >= scriptend_p)
{
if (!crossline)
buildprintf("Error: Line %i is incomplete\n",scriptline);
initprintf("Error: Line %i is incomplete\n",scriptline);
endofscript = TRUE;
return;
}
@ -191,7 +191,7 @@ skipspace:
if (*script_p == '#') // # is comment field
{
if (!crossline)
buildprintf("Error: Line %i is incomplete\n",scriptline);
initprintf("Error: Line %i is incomplete\n",scriptline);
while (*script_p++ != '\n')
if (script_p >= scriptend_p)
{
@ -212,7 +212,7 @@ skipspace:
if (script_p == scriptend_p)
break;
ASSERT(token_p != &token[MAXTOKEN]);
// buildprintf("Error: Token too large on line %i\n",scriptline);
// initprintf("Error: Token too large on line %i\n",scriptline);
}
*token_p = 0;
@ -495,7 +495,6 @@ static int cm_transtok(const char *tok, const struct _tokset *set, const unsigne
return -1;
}
// Load custom map and episode information
// level # {
// title "Map Name"
// filename "filename.map"
@ -613,7 +612,7 @@ void LoadCustomInfoFromScript(const char *filename)
// first map file in LevelInfo[] is bogus, last map file is NULL
if (curmap < 1 || curmap > MAX_LEVELS_REG)
{
buildprintf("Error: map number %d not in range 1-%d on line %s:%d\n",
initprintf("Error: map number %d not in range 1-%d on line %s:%d\n",
curmap, MAX_LEVELS_REG, script->filename,
scriptfile_getlinum(script,mapnumptr));
script->textptr = braceend;
@ -687,7 +686,7 @@ void LoadCustomInfoFromScript(const char *filename)
break;
}
default:
buildprintf("Error on line %s:%d\n",
initprintf("Error on line %s:%d\n",
script->filename,
scriptfile_getlinum(script,script->ltextptr));
break;
@ -706,7 +705,7 @@ void LoadCustomInfoFromScript(const char *filename)
// first map file in LevelInfo[] is bogus, last map file is NULL
if ((unsigned)--curmap >= 2u)
{
buildprintf("Error: episode number %d not in range 1-2 on line %s:%d\n",
initprintf("Error: episode number %d not in range 1-2 on line %s:%d\n",
curmap, script->filename,
scriptfile_getlinum(script,epnumptr));
script->textptr = braceend;
@ -738,7 +737,7 @@ void LoadCustomInfoFromScript(const char *filename)
break;
}
default:
buildprintf("Error on line %s:%d\n",
initprintf("Error on line %s:%d\n",
script->filename,
scriptfile_getlinum(script,script->ltextptr));
break;
@ -757,7 +756,7 @@ void LoadCustomInfoFromScript(const char *filename)
// first map file in LevelInfo[] is bogus, last map file is NULL
if ((unsigned)--curmap >= 4u)
{
buildprintf("Error: skill number %d not in range 1-4 on line %s:%d\n",
initprintf("Error: skill number %d not in range 1-4 on line %s:%d\n",
curmap, script->filename,
scriptfile_getlinum(script,epnumptr));
script->textptr = braceend;
@ -780,7 +779,7 @@ void LoadCustomInfoFromScript(const char *filename)
break;
}
default:
buildprintf("Error on line %s:%d\n",
initprintf("Error on line %s:%d\n",
script->filename,
scriptfile_getlinum(script,script->ltextptr));
break;
@ -859,7 +858,7 @@ void LoadCustomInfoFromScript(const char *filename)
if ((unsigned)--in >= (unsigned)InvDecl_TOTAL)
{
buildprintf("Error: inventory item number not in range 1-%d on line %s:%d\n",
initprintf("Error: inventory item number not in range 1-%d on line %s:%d\n",
InvDecl_TOTAL, script->filename,
scriptfile_getlinum(script,invnumptr));
script->textptr = braceend;
@ -879,7 +878,7 @@ void LoadCustomInfoFromScript(const char *filename)
if (scriptfile_getnumber(script, &amt)) break;
break;
default:
buildprintf("Error on line %s:%d\n",
initprintf("Error on line %s:%d\n",
script->filename,
scriptfile_getlinum(script,script->ltextptr));
break;
@ -911,7 +910,7 @@ void LoadCustomInfoFromScript(const char *filename)
if ((unsigned)--in >= (unsigned)SIZ(weaponmap))
{
buildprintf("Error: weapon number not in range 1-%d on line %s:%d\n",
initprintf("Error: weapon number not in range 1-%d on line %s:%d\n",
(int)SIZ(weaponmap), script->filename,
scriptfile_getlinum(script,wpnnumptr));
script->textptr = braceend;
@ -946,7 +945,7 @@ void LoadCustomInfoFromScript(const char *filename)
if (scriptfile_getnumber(script, &wpickup)) break;
break;
default:
buildprintf("Error on line %s:%d\n",
initprintf("Error on line %s:%d\n",
script->filename,
scriptfile_getlinum(script,script->ltextptr));
break;
@ -984,7 +983,7 @@ void LoadCustomInfoFromScript(const char *filename)
case CM_SECRET:
case CM_QUIT:
default:
buildprintf("Error on line %s:%d\n",
initprintf("Error on line %s:%d\n",
script->filename,
scriptfile_getlinum(script,script->ltextptr));
break;

View file

@ -792,7 +792,7 @@ DoSpringBoardDown(void)
{
int destz;
destz = sector[nextsectorneighborz(sbp->Sector, sector[sbp->Sector].floorz, 1, 1)].floorz;
destz = sector[nextsectorneighborz(sbp->Sector, sector[sbp->Sector].floorz, SEARCH_FLOOR, SEARCH_DOWN)].floorz;
AnimSet(&sector[sbp->Sector].floorz, destz, 256);

View file

@ -583,8 +583,7 @@ StopSound(void)
#define MAXLEVLDIST 19000 // The higher the number, the further away you can hear sound
short
SoundDist(int x, int y, int z, int basedist)
short SoundDist(int x, int y, int z, int basedist)
{
double tx, ty, tz;
double sqrdist,retval;
@ -637,8 +636,7 @@ SoundDist(int x, int y, int z, int basedist)
// Angle calcuations - may need to be checked to make sure they are right
//
short
SoundAngle(int x, int y)
short SoundAngle(int x, int y)
{
extern short screenpeek;
@ -783,8 +781,7 @@ SWBOOL CacheSound(int num, int type)
#define SOUND_UNIT MAXLEVLDIST/255
// NOTE: If v3df_follow == 1, x,y,z are considered literal coordinates
int
PlaySound(int num, int *x, int *y, int *z, Voc3D_Flags flags)
int PlaySound(int num, int *x, int *y, int *z, Voc3D_Flags flags)
{
VOC_INFOp vp;
VOC3D_INFOp v3p;
@ -1221,8 +1218,7 @@ void COVER_SetReverb(int amt)
===================
*/
void
MusicShutdown(void)
void MusicShutdown(void)
{
StopSong();
@ -1980,5 +1976,4 @@ PlaySpriteSound(short spritenum, int attrib_ndx, Voc3D_Flags flags)
PlaySound(u->Attrib->Sounds[attrib_ndx], &sp->x, &sp->y, &sp->z, flags);
}
// vim:ts=4:sw=4:expandtab:
END_SW_NS

View file

@ -777,7 +777,7 @@ KillSprite(int16_t SpriteNum)
{
TRAVERSE_SPRITE_STAT(headspritestat[STAT_ENEMY], i, nexti)
{
if (User[i]->tgt_sp == sp)
if ((unsigned)i < MAXSPRITES && User[i] != NULL && User[i]->tgt_sp == sp)
{
DoActorPickClosePlayer(i);
}
@ -957,6 +957,9 @@ SpawnSprite(short stat, short id, STATEp state, short sectnum, int x, int y, int
int16_t SpriteNum;
USERp u;
if (sectnum < 0)
return -1;
ASSERT(!Prediction);
PRODUCTION_ASSERT(sectnum >= 0 && sectnum < MAXSECTORS);
@ -1083,7 +1086,7 @@ ActorTestSpawn(SPRITEp sp)
case ZILLA_RUN_R0: c = "zilla"; break;
default: c = "?"; break;
}
buildprintf("WARNING: skill-masked %s at %d,%d,%d not being killed because it "
initprintf("WARNING: skill-masked %s at %d,%d,%d not being killed because it "
"activates something\n", c, TrackerCast(sp->x), TrackerCast(sp->y), TrackerCast(sp->z));
return TRUE;
}
@ -5953,11 +5956,8 @@ KeyMain:
if (pp->WpnAmmo[WPN_STAR] >= DamageData[WPN_STAR].max_ammo)
break;
#ifdef UK_VERSION
sprintf(ds,"Darts");
#else
//sprintf(ds,"Shurikens");
#endif
//if (useDarts) sprintf(ds,"Darts");
//else sprintf(ds,"Shurikens");
PutStringInfo(Player+pnum, DamageData[WPN_STAR].weapon_name);
PlayerUpdateAmmo(pp, WPN_STAR, DamageData[WPN_STAR].weapon_pickup);
SetFadeAmt(pp,ITEMFLASHAMT,ITEMFLASHCLR); // Flash blue on item pickup
@ -6937,6 +6937,8 @@ SpriteControl(void)
{
u = User[i];
if (u == 0)
continue;
if (u->Tics)
{
if ((u->Tics -= synctics) <= 0)
@ -6966,6 +6968,9 @@ SpriteControl(void)
if (!TEST(u->Flags, SPR_ACTIVE))
continue;
if (i == 69 && nexti == -1)
continue;
(*User[i]->ActorActionFunc)(i);
}

View file

@ -884,7 +884,7 @@ BossHealthMeter(void)
serpwasseen = TRUE;
if (!SW_SHAREWARE && MusicEnabled())
{
PlaySong(0, 13, TRUE, TRUE);
PlaySong(0, ThemeTrack[2], TRUE, TRUE);
}
}
else if (i == 1 && !sumowasseen)
@ -892,7 +892,7 @@ BossHealthMeter(void)
sumowasseen = TRUE;
if (!SW_SHAREWARE && MusicEnabled())
{
PlaySong(0, 13, TRUE, TRUE);
PlaySong(0, ThemeTrack[3], TRUE, TRUE);
}
}
else if (i == 2 && !zillawasseen)
@ -900,7 +900,7 @@ BossHealthMeter(void)
zillawasseen = TRUE;
if (!SW_SHAREWARE && MusicEnabled())
{
PlaySong(0, 13, TRUE, TRUE);
PlaySong(0, ThemeTrack[4], TRUE, TRUE);
}
}
}
@ -922,7 +922,7 @@ BossHealthMeter(void)
// This is needed because of possible saved game situation
if (!SW_SHAREWARE && !triedplay)
{
PlaySong(0, 13, TRUE, FALSE);
PlaySong(0, ThemeTrack[i+2], TRUE, FALSE);
triedplay = TRUE; // Only try once, then give up
}

3
source/sw/src/swcvar.cpp Normal file
View file

@ -0,0 +1,3 @@
#include "swcvars.h"
CVAR(Bool, sw_ninjahack, false, CVAR_ARCHIVE|CVAR_GLOBALCONFIG);

4
source/sw/src/swcvar.h Normal file
View file

@ -0,0 +1,4 @@
#include "c_cvars.h"
EXTERN_CVAR(Bool, sw_ninjahack)

View file

@ -61,8 +61,7 @@ const char *KeyDoorMessage[MAX_KEYS] =
"You need a RED key for this door."
};
void
DisplaySummaryString(PLAYERp pp, short xs, short ys, short color, short shade, const char *buffer)
void DisplaySummaryString(PLAYERp pp, short xs, short ys, short color, short shade, const char *buffer)
{
short size,x;
const char *ptr;
@ -98,8 +97,7 @@ DisplaySummaryString(PLAYERp pp, short xs, short ys, short color, short shade, c
}
}
PANEL_SPRITEp
pClearTextLineID(PLAYERp pp, short id, long y, short pri)
PANEL_SPRITEp pClearTextLineID(PLAYERp pp, short id, int y, short pri)
{
PANEL_SPRITEp nsp=NULL;
PANEL_SPRITEp psp=NULL, next;
@ -122,8 +120,7 @@ pClearTextLineID(PLAYERp pp, short id, long y, short pri)
}
// only call this from menu code - it does a pKillSprite
PANEL_SPRITEp
pMenuClearTextLineID(PLAYERp pp, short id, long y, short pri)
PANEL_SPRITEp pMenuClearTextLineID(PLAYERp pp, short id, int y, short pri)
{
PANEL_SPRITEp nsp=NULL;
PANEL_SPRITEp psp=NULL, next;
@ -146,15 +143,13 @@ pMenuClearTextLineID(PLAYERp pp, short id, long y, short pri)
}
void
pClearTextLine(PLAYERp pp, long y)
void pClearTextLine(PLAYERp pp, int y)
{
SetRedrawScreen(pp);
pClearTextLineID(pp, ID_TEXT, y, PRI_FRONT_MAX);
}
void
StringTimer(PANEL_SPRITEp psp)
void StringTimer(PANEL_SPRITEp psp)
{
if ((psp->kill_tics -= synctics) <= 0)
{
@ -165,8 +160,7 @@ StringTimer(PANEL_SPRITEp psp)
}
}
void
PutStringTimer(PLAYERp pp, short x, short y, const char *string, short seconds)
void PutStringTimer(PLAYERp pp, short x, short y, const char *string, short seconds)
{
int ndx, offset;
char c;
@ -213,14 +207,12 @@ PutStringTimer(PLAYERp pp, short x, short y, const char *string, short seconds)
}
}
void
KillString(PLAYERp pp, short y)
void KillString(PLAYERp pp, short y)
{
pClearTextLineID(pp, ID_TEXT, y, PRI_FRONT_MAX);
}
PANEL_SPRITEp
pClearSpriteXY(PLAYERp pp, short x, short y)
PANEL_SPRITEp pClearSpriteXY(PLAYERp pp, short x, short y)
{
PANEL_SPRITEp nsp=NULL;
PANEL_SPRITEp psp=NULL, next;
@ -234,8 +226,7 @@ pClearSpriteXY(PLAYERp pp, short x, short y)
return NULL;
}
PANEL_SPRITEp
pClearSpriteID(PLAYERp pp, short id)
PANEL_SPRITEp pClearSpriteID(PLAYERp pp, short id)
{
PANEL_SPRITEp nsp=NULL;
PANEL_SPRITEp psp=NULL, next;
@ -250,8 +241,7 @@ pClearSpriteID(PLAYERp pp, short id)
}
void
DisplayPanelNumber(PLAYERp pp, short xs, short ys, int number)
void DisplayPanelNumber(PLAYERp pp, short xs, short ys, int number)
{
char buffer[32];
char *ptr;
@ -273,8 +263,7 @@ DisplayPanelNumber(PLAYERp pp, short xs, short ys, int number)
}
}
void
DisplayMiniBarNumber(PLAYERp pp, short xs, short ys, int number)
void DisplayMiniBarNumber(PLAYERp pp, short xs, short ys, int number)
{
char buffer[32];
char *ptr;
@ -301,8 +290,7 @@ DisplayMiniBarNumber(PLAYERp pp, short xs, short ys, int number)
}
}
void
DisplayMiniBarSmString(PLAYERp pp, short xs, short ys, short pal, const char *buffer)
void DisplayMiniBarSmString(PLAYERp pp, short xs, short ys, short pal, const char *buffer)
{
short size=4,x;
const char *ptr;
@ -321,14 +309,12 @@ DisplayMiniBarSmString(PLAYERp pp, short xs, short ys, short pal, const char *bu
pic = FRAG_FIRST_TILE + (*ptr - FRAG_FIRST_ASCII);
rotatesprite((long)x << 16, (long)ys << 16, (1 << 16), 0,
pic, 0, pal,
rotatesprite((int)x << 16, (int)ys << 16, (1 << 16), 0, pic, 0, pal,
ROTATE_SPRITE_SCREEN_CLIP | ROTATE_SPRITE_CORNER, 0, 0, xdim - 1, ydim - 1);
}
}
void
DisplaySmString(PLAYERp pp, short xs, short ys, short pal, const char *buffer)
void DisplaySmString(PLAYERp pp, short xs, short ys, short pal, const char *buffer)
{
short size=4,x;
const char *ptr;
@ -352,8 +338,7 @@ DisplaySmString(PLAYERp pp, short xs, short ys, short pal, const char *buffer)
}
}
void
DisplayFragString(PLAYERp pp, short xs, short ys, const char *buffer)
void DisplayFragString(PLAYERp pp, short xs, short ys, const char *buffer)
{
short size=4,x;
const char *ptr;
@ -383,8 +368,7 @@ DisplayFragString(PLAYERp pp, short xs, short ys, const char *buffer)
}
}
void
DisplayFragNumbers(PLAYERp pp)
void DisplayFragNumbers(PLAYERp pp)
{
char buffer[32];
char *ptr;
@ -423,8 +407,7 @@ DisplayFragNumbers(PLAYERp pp)
DisplayFragString(pp, xs, ys, buffer);
}
void
DisplayFragNames(PLAYERp pp)
void DisplayFragNames(PLAYERp pp)
{
char *ptr;
short x, xs, ys, size;
@ -508,8 +491,7 @@ void PutStringInfoLine2(PLAYERp pp, const char *string)
PutStringTimer(pp, x, y, string, GlobInfoStringTime);
}
void
pMenuClearTextLine(PLAYERp pp)
void pMenuClearTextLine(PLAYERp pp)
{
pMenuClearTextLineID(pp, ID_TEXT, TEXT_INFO_LINE(0), PRI_FRONT_MAX);
pMenuClearTextLineID(pp, ID_TEXT, TEXT_INFO_LINE(1), PRI_FRONT_MAX);

View file

@ -42,6 +42,6 @@ void DisplayPanelNumber(PLAYERp pp,short xs,short ys,int number);
void PutStringInfo(PLAYERp pp, const char *string);
void PutStringInfoLine(PLAYERp pp, const char *string);
void PutStringInfoLine2(PLAYERp pp, const char *string);
void pClearTextLine(PLAYERp pp,long y);
void pClearTextLine(PLAYERp pp,int y);
void pMenuClearTextLine(PLAYERp pp);
END_SW_NS

View file

@ -1936,8 +1936,7 @@ PlayerPart:
}
}
void
RefreshPoints(SECTOR_OBJECTp sop, int nx, int ny, SWBOOL dynamic)
void RefreshPoints(SECTOR_OBJECTp sop, int nx, int ny, SWBOOL dynamic)
{
short wallcount = 0, j, k, startwall, endwall, delta_ang_from_orig;
SECTORp *sectp;

View file

@ -38,6 +38,7 @@ Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms
#include "network.h"
#include "pal.h"
#include "vis.h"
#include "swcvar.h"
#include "ai.h"
#include "weapon.h"
@ -5402,6 +5403,7 @@ ActorHealth(short SpriteNum, short amt)
case NINJA_RUN_R0:
{
extern STATEp sg_NinjaGrabThroat[];
extern STATEp sg_NinjaHariKari[];
if (TEST(u->Flags2, SPR2_DYING)) return TRUE;
if (TEST(u->Flags, SPR_FALLING | SPR_JUMPING | SPR_CLIMBING)) return TRUE;
@ -5421,6 +5423,9 @@ ActorHealth(short SpriteNum, short amt)
InitBloodSpray(SpriteNum,FALSE,105);
sp->ang = NORM_ANGLE(getangle(u->tgt_sp->x - sp->x, u->tgt_sp->y - sp->y) + 1024);
RESET(sp->cstat, CSTAT_SPRITE_YFLIP);
if (sw_ninjahack)
NewStateGroup(SpriteNum, sg_NinjaHariKari);
else
NewStateGroup(SpriteNum, sg_NinjaGrabThroat);
}
break;
@ -20641,7 +20646,6 @@ SWBOOL TestDontStick(short SpriteNum, short hit_sect, short hit_wall, int hit_z)
{
ASSERT(SpriteNum>=0);
hit_wall = NORM_WALL(u->ret);
hit_sect = sp->sectnum;
}
wp = &wall[hit_wall];