2006-04-13 20:47:06 +00:00
//-------------------------------------------------------------------------
/*
Copyright ( C ) 2005 - EDuke32 team
This file is part of EDuke32
EDuke32 is free software ; you can redistribute it and / or
modify it under the terms of the GNU General Public License version 2
as published by the Free Software Foundation .
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 . , 59 Temple Place - Suite 330 , Boston , MA 02111 - 1307 , USA .
*/
//-------------------------------------------------------------------------
# include <time.h>
# include "duke3d.h"
# include "gamedef.h"
# include "scriplib.h"
# include "osd.h"
2006-12-20 03:27:25 +00:00
static int g_i , g_p ;
2006-04-13 20:47:06 +00:00
static long g_x , * g_t ;
static spritetype * g_sp ;
2006-12-20 03:27:25 +00:00
int killit_flag ;
2006-04-13 20:47:06 +00:00
extern int32 scripthandle ;
2006-12-18 09:32:17 +00:00
static void DoUserDef ( int iSet , int lLabelID , int lVar2 )
2006-04-13 20:47:06 +00:00
{
long lValue ;
2006-12-10 19:32:44 +00:00
if ( g_p ! = myconnectindex ) return ;
2006-04-13 20:47:06 +00:00
2006-12-18 09:32:17 +00:00
lValue = GetGameVarID ( lVar2 , g_i , g_p ) ;
2006-12-18 08:37:12 +00:00
2006-12-18 09:32:17 +00:00
switch ( lLabelID )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
case USERDEFS_GOD :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . god = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . god , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_WARP_ON :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . warp_on = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . warp_on , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_CASHMAN :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . cashman = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . cashman , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_EOG :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . eog = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . eog , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_SHOWALLMAP :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . showallmap = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . showallmap , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_SHOW_HELP :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . show_help = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . show_help , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_SCROLLMODE :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . scrollmode = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . scrollmode , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_CLIPPING :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . clipping = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . clipping , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
// case USERDEFS_USER_NAME:
2006-12-18 08:37:12 +00:00
// if(iSet)
2006-11-16 03:02:42 +00:00
// {
// ud.user_name[MAXPLAYERS][32] = lValue;
// }
// else
// {
2006-12-18 09:32:17 +00:00
// SetGameVarID(lVar2, ud.user_name[MAXPLAYERS][32], g_i, g_p);
2006-11-16 03:02:42 +00:00
// }
// break;
// case USERDEFS_RIDECULE:
2006-12-18 08:37:12 +00:00
// if(iSet)
2006-11-16 03:02:42 +00:00
// {
// ud.ridecule = lValue;
// }
// else
// {
2006-12-18 09:32:17 +00:00
// SetGameVarID(lVar2, ud.ridecule, g_i, g_p);
2006-11-16 03:02:42 +00:00
// }
// break;
// case USERDEFS_SAVEGAME:
2006-12-18 08:37:12 +00:00
// if(iSet)
2006-11-16 03:02:42 +00:00
// {
// ud.savegame = lValue;
// }
// else
// {
2006-12-18 09:32:17 +00:00
// SetGameVarID(lVar2, ud.savegame, g_i, g_p);
2006-11-16 03:02:42 +00:00
// }
// break;
// case USERDEFS_PWLOCKOUT:
2006-12-18 08:37:12 +00:00
// if(iSet)
2006-11-16 03:02:42 +00:00
// {
// ud.pwlockout = lValue;
// }
// else
// {
2006-12-18 09:32:17 +00:00
// SetGameVarID(lVar2, ud.pwlockout, g_i, g_p);
2006-11-16 03:02:42 +00:00
// }
// break;
// case USERDEFS_RTSNAME:
2006-12-18 08:37:12 +00:00
// if(iSet)
2006-11-16 03:02:42 +00:00
// {
// ud.rtsname = lValue;
// }
// else
// {
2006-12-18 09:32:17 +00:00
// SetGameVarID(lVar2, ud.rtsname, g_i, g_p);
2006-11-16 03:02:42 +00:00
// }
// break;
case USERDEFS_OVERHEAD_ON :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . overhead_on = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . overhead_on , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_LAST_OVERHEAD :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . last_overhead = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . last_overhead , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_SHOWWEAPONS :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . showweapons = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . showweapons , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_PAUSE_ON :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . pause_on = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . pause_on , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_FROM_BONUS :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . from_bonus = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . from_bonus , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_CAMERASPRITE :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . camerasprite = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . camerasprite , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_LAST_CAMSPRITE :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . last_camsprite = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . last_camsprite , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_LAST_LEVEL :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . last_level = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . last_level , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_SECRETLEVEL :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . secretlevel = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . secretlevel , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_CONST_VISIBILITY :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . const_visibility = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . const_visibility , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_UW_FRAMERATE :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . uw_framerate = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . uw_framerate , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_CAMERA_TIME :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . camera_time = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . camera_time , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_FOLFVEL :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . folfvel = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . folfvel , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_FOLAVEL :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . folavel = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . folavel , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_FOLX :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . folx = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . folx , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_FOLY :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . foly = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . foly , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_FOLA :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . fola = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . fola , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_RECCNT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . reccnt = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . reccnt , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_ENTERED_NAME :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . entered_name = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . entered_name , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_SCREEN_TILTING :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . screen_tilting = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . screen_tilting , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_SHADOWS :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . shadows = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . shadows , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_FTA_ON :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . fta_on = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . fta_on , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_EXECUTIONS :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . executions = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . executions , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_AUTO_RUN :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . auto_run = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . auto_run , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_COORDS :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . coords = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . coords , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_TICKRATE :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . tickrate = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . tickrate , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_M_COOP :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . m_coop = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . m_coop , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_COOP :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . coop = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . coop , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_SCREEN_SIZE :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-12-11 21:18:21 +00:00
{
if ( ud . screen_size ! = lValue )
{
ud . screen_size = lValue ;
vscrn ( ) ;
}
}
2006-11-16 03:02:42 +00:00
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . screen_size , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_LOCKOUT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . lockout = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . lockout , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_CROSSHAIR :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . crosshair = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . crosshair , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
// case USERDEFS_WCHOICE:
2006-12-18 08:37:12 +00:00
// if(iSet)
2006-11-16 03:02:42 +00:00
// {
// ud.wchoice = lValue;
// }
// else
// {
2006-12-18 09:32:17 +00:00
// SetGameVarID(lVar2, ud.wchoice, g_i, g_p);
2006-11-16 03:02:42 +00:00
// }
// break;
case USERDEFS_PLAYERAI :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . playerai = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . playerai , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_RESPAWN_MONSTERS :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . respawn_monsters = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . respawn_monsters , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_RESPAWN_ITEMS :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . respawn_items = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . respawn_items , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_RESPAWN_INVENTORY :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . respawn_inventory = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . respawn_inventory , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_RECSTAT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . recstat = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . recstat , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_MONSTERS_OFF :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . monsters_off = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . monsters_off , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_BRIGHTNESS :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . brightness = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . brightness , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_M_RESPAWN_ITEMS :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . m_respawn_items = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . m_respawn_items , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_M_RESPAWN_MONSTERS :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . m_respawn_monsters = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . m_respawn_monsters , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_M_RESPAWN_INVENTORY :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . m_respawn_inventory = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . m_respawn_inventory , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_M_RECSTAT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . m_recstat = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . m_recstat , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_M_MONSTERS_OFF :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . m_monsters_off = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . m_monsters_off , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_DETAIL :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . detail = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . detail , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_M_FFIRE :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . m_ffire = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . m_ffire , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_FFIRE :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . ffire = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . ffire , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_M_PLAYER_SKILL :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . m_player_skill = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . m_player_skill , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_M_LEVEL_NUMBER :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . m_level_number = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . m_level_number , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_M_VOLUME_NUMBER :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . m_volume_number = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . m_volume_number , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_MULTIMODE :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . multimode = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . multimode , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_PLAYER_SKILL :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . player_skill = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . player_skill , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_LEVEL_NUMBER :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . level_number = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . level_number , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_VOLUME_NUMBER :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . volume_number = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . volume_number , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_M_MARKER :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . m_marker = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . m_marker , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_MARKER :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . marker = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . marker , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_MOUSEFLIP :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . mouseflip = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . mouseflip , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_STATUSBARSCALE :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . statusbarscale = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . statusbarscale , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_DRAWWEAPON :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . drawweapon = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . drawweapon , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_MOUSEAIMING :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . mouseaiming = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . mouseaiming , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_WEAPONSWITCH :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . weaponswitch = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . weaponswitch , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_DEMOCAMS :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . democams = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . democams , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-17 01:01:32 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_COLOR :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . color = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . color , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 06:01:16 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_MSGDISPTIME :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . msgdisptime = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . msgdisptime , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-22 07:00:31 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_STATUSBARMODE :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . statusbarmode = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . statusbarmode , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-30 01:39:58 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_M_NOEXITS :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . m_noexits = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . m_noexits , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-05-04 03:14:49 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_NOEXITS :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . noexits = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . noexits , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-05-04 03:14:49 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_AUTOVOTE :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . autovote = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . autovote , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-05-04 04:18:55 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_AUTOMSG :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . automsg = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . automsg , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-05-05 01:20:19 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_IDPLAYERS :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . idplayers = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . idplayers , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-05-05 22:39:34 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_TEAM :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ud . team = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ud . team , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-08-18 23:52:26 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_MYX :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
myx = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , myx , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-09-19 23:02:33 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_OMYX :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
omyx = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , omyx , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-09-19 23:02:33 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_MYXVEL :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
myxvel = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , myxvel , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-09-19 23:02:33 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_MYY :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
myy = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , myy , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-09-19 23:02:33 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_OMYY :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
omyy = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , omyy , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-09-19 23:02:33 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_MYYVEL :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
myyvel = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , myyvel , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-09-19 23:02:33 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_MYZ :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
myx = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , myx , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-09-19 23:02:33 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_OMYZ :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
omyz = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , omyz , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-09-19 23:02:33 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_MYZVEL :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
myzvel = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , myzvel , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-09-19 23:02:33 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_MYHORIZ :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
myhoriz = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , myhoriz , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-09-19 23:02:33 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_OMYHORIZ :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
omyhoriz = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , omyhoriz , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-09-19 23:02:33 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_MYHORIZOFF :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
myhorizoff = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , myhorizoff , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-09-19 23:02:33 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_OMYHORIZOFF :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
omyhorizoff = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , omyhorizoff , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-09-19 23:02:33 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_MYANG :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
myang = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , myang , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-09-19 23:02:33 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_OMYANG :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
omyang = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , omyang , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-09-19 23:02:33 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_MYCURSECTNUM :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
mycursectnum = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , mycursectnum , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-09-19 23:02:33 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_MYJUMPINGCOUNTER :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
myjumpingcounter = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , myjumpingcounter , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-09-19 23:02:33 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_MYJUMPINGTOGGLE :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
myjumpingtoggle = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , myjumpingtoggle , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-09-19 23:02:33 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_MYONGROUND :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
myonground = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , myonground , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-09-19 23:02:33 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_MYHARDLANDING :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
myhardlanding = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , myhardlanding , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-09-19 23:02:33 +00:00
2006-11-16 03:02:42 +00:00
case USERDEFS_MYRETURNTOCENTER :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
myreturntocenter = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , myreturntocenter , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-09-19 23:02:33 +00:00
2006-11-16 03:02:42 +00:00
default :
break ;
2006-04-13 20:47:06 +00:00
}
return ;
}
2006-12-18 09:32:17 +00:00
static void DoThisProjectile ( int iSet , int lVar1 , int lLabelID , int lVar2 )
2006-04-13 20:47:06 +00:00
{
2006-12-18 08:37:12 +00:00
long lValue , proj = g_i ;
2006-04-13 20:47:06 +00:00
2006-12-18 09:32:17 +00:00
if ( lVar1 ! = g_iThisActorID )
proj = GetGameVarID ( lVar1 , g_i , g_p ) ;
2006-04-13 20:47:06 +00:00
2006-11-13 23:12:47 +00:00
if ( proj < 0 | | proj > = MAXSPRITES )
2006-06-14 03:31:34 +00:00
return ;
2006-12-18 09:32:17 +00:00
lValue = GetGameVarID ( lVar2 , g_i , g_p ) ;
2006-12-18 08:37:12 +00:00
2006-12-18 09:32:17 +00:00
switch ( lLabelID )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
case PROJ_WORKSLIKE :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
thisprojectile [ proj ] . workslike = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , thisprojectile [ proj ] . workslike , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_SPAWNS :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
thisprojectile [ proj ] . spawns = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , thisprojectile [ proj ] . spawns , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_SXREPEAT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
thisprojectile [ proj ] . sxrepeat = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , thisprojectile [ proj ] . sxrepeat , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_SYREPEAT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
thisprojectile [ proj ] . syrepeat = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , thisprojectile [ proj ] . syrepeat , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_SOUND :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
thisprojectile [ proj ] . sound = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , thisprojectile [ proj ] . sound , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_ISOUND :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
thisprojectile [ proj ] . isound = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , thisprojectile [ proj ] . isound , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_VEL :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
thisprojectile [ proj ] . vel = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , thisprojectile [ proj ] . vel , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_EXTRA :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
thisprojectile [ proj ] . extra = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , thisprojectile [ proj ] . extra , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_DECAL :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
thisprojectile [ proj ] . decal = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , thisprojectile [ proj ] . decal , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_TRAIL :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
thisprojectile [ proj ] . trail = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , thisprojectile [ proj ] . trail , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_TXREPEAT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
thisprojectile [ proj ] . txrepeat = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , thisprojectile [ proj ] . txrepeat , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_TYREPEAT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
thisprojectile [ proj ] . tyrepeat = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , thisprojectile [ proj ] . tyrepeat , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_TOFFSET :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
thisprojectile [ proj ] . toffset = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , thisprojectile [ proj ] . toffset , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_TNUM :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
thisprojectile [ proj ] . tnum = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , thisprojectile [ proj ] . tnum , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_DROP :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
thisprojectile [ proj ] . drop = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , thisprojectile [ proj ] . drop , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_CSTAT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
thisprojectile [ proj ] . cstat = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , thisprojectile [ proj ] . cstat , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_CLIPDIST :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
thisprojectile [ proj ] . clipdist = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , thisprojectile [ proj ] . clipdist , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_SHADE :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
thisprojectile [ proj ] . shade = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , thisprojectile [ proj ] . shade , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_XREPEAT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
thisprojectile [ proj ] . xrepeat = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , thisprojectile [ proj ] . xrepeat , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_YREPEAT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
thisprojectile [ proj ] . yrepeat = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , thisprojectile [ proj ] . yrepeat , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_PAL :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
thisprojectile [ proj ] . pal = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , thisprojectile [ proj ] . pal , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_EXTRA_RAND :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
thisprojectile [ proj ] . extra_rand = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , thisprojectile [ proj ] . extra_rand , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_HITRADIUS :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
thisprojectile [ proj ] . hitradius = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , thisprojectile [ proj ] . hitradius , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_VEL_MULT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
thisprojectile [ proj ] . velmult = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , thisprojectile [ proj ] . velmult , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_OFFSET :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
thisprojectile [ proj ] . offset = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , thisprojectile [ proj ] . offset , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_BOUNCES :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
thisprojectile [ proj ] . bounces = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , thisprojectile [ proj ] . bounces , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_BSOUND :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
thisprojectile [ proj ] . bsound = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , thisprojectile [ proj ] . bsound , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_RANGE :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
thisprojectile [ proj ] . range = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , thisprojectile [ proj ] . range , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
default :
break ;
2006-04-13 20:47:06 +00:00
}
return ;
}
2006-12-18 09:32:17 +00:00
static void DoPlayer ( int iSet , int lVar1 , int lLabelID , int lVar2 , int lParm2 )
2006-04-13 20:47:06 +00:00
{
long lValue ;
long lTemp ;
2006-12-18 08:37:12 +00:00
int iPlayer = g_p ;
2006-04-13 20:47:06 +00:00
2006-12-18 09:32:17 +00:00
if ( lVar1 ! = g_iThisActorID )
iPlayer = GetGameVarID ( lVar1 , g_i , g_p ) ;
2006-04-13 20:47:06 +00:00
2006-11-13 23:12:47 +00:00
if ( iPlayer < 0 | | iPlayer > = MAXPLAYERS )
2006-04-13 20:47:06 +00:00
return ;
2006-12-18 09:32:17 +00:00
lValue = GetGameVarID ( lVar2 , g_i , g_p ) ;
2006-12-18 08:37:12 +00:00
2006-12-18 09:32:17 +00:00
switch ( lLabelID )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
case PLAYER_ZOOM :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . zoom = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . zoom , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_EXITX :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . exitx = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . exitx , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_EXITY :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . exity = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . exity , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_LOOGIEX :
2006-12-18 09:32:17 +00:00
lTemp = lParm2 ;
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . loogiex [ lTemp ] = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . loogiex [ lTemp ] , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_LOOGIEY :
2006-12-18 09:32:17 +00:00
lTemp = lParm2 ;
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . loogiey [ lTemp ] = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . loogiey [ lTemp ] , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_NUMLOOGS :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . numloogs = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . numloogs , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_LOOGCNT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . loogcnt = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . loogcnt , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_POSX :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . posx = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . posx , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_POSY :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . posy = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . posy , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_POSZ :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . posz = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . posz , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_HORIZ :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . horiz = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . horiz , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_OHORIZ :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . ohoriz = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . ohoriz , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_OHORIZOFF :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . ohorizoff = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . ohorizoff , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_INVDISPTIME :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . invdisptime = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . invdisptime , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_BOBPOSX :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . bobposx = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . bobposx , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_BOBPOSY :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . bobposy = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . bobposy , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_OPOSX :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . oposx = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . oposx , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_OPOSY :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . oposy = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . oposy , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_OPOSZ :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . oposz = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . oposz , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_PYOFF :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . pyoff = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . pyoff , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_OPYOFF :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . opyoff = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . opyoff , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_POSXV :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . posxv = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . posxv , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_POSYV :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . posyv = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . posyv , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_POSZV :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . poszv = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . poszv , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_LAST_PISSED_TIME :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . last_pissed_time = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . last_pissed_time , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_TRUEFZ :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . truefz = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . truefz , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_TRUECZ :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . truecz = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . truecz , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_PLAYER_PAR :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . player_par = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . player_par , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_VISIBILITY :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . visibility = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . visibility , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_BOBCOUNTER :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . bobcounter = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . bobcounter , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_WEAPON_SWAY :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . weapon_sway = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . weapon_sway , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_PALS_TIME :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . pals_time = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . pals_time , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_RANDOMFLAMEX :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . randomflamex = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . randomflamex , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_CRACK_TIME :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . crack_time = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . crack_time , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_AIM_MODE :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . aim_mode = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . aim_mode , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_ANG :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . ang = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . ang , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_OANG :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . oang = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . oang , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_ANGVEL :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . angvel = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . angvel , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_CURSECTNUM :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . cursectnum = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . cursectnum , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_LOOK_ANG :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . look_ang = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . look_ang , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_LAST_EXTRA :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . last_extra = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . last_extra , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_SUBWEAPON :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . subweapon = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . subweapon , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_AMMO_AMOUNT :
2006-12-18 09:32:17 +00:00
lTemp = lParm2 ;
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . ammo_amount [ lTemp ] = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . ammo_amount [ lTemp ] , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_WACKEDBYACTOR :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . wackedbyactor = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . wackedbyactor , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_FRAG :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . frag = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . frag , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_FRAGGEDSELF :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . fraggedself = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . fraggedself , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_CURR_WEAPON :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . curr_weapon = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . curr_weapon , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_LAST_WEAPON :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . last_weapon = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . last_weapon , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_TIPINCS :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . tipincs = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . tipincs , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_HORIZOFF :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . horizoff = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . horizoff , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_WANTWEAPONFIRE :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . wantweaponfire = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . wantweaponfire , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_HOLODUKE_AMOUNT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . holoduke_amount = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . holoduke_amount , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_NEWOWNER :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . newowner = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . newowner , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_HURT_DELAY :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . hurt_delay = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . hurt_delay , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_HBOMB_HOLD_DELAY :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . hbomb_hold_delay = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . hbomb_hold_delay , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_JUMPING_COUNTER :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . jumping_counter = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . jumping_counter , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_AIRLEFT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . airleft = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . airleft , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_KNEE_INCS :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . knee_incs = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . knee_incs , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_ACCESS_INCS :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . access_incs = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . access_incs , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_FTA :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . fta = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . fta , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_FTQ :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . ftq = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . ftq , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_ACCESS_WALLNUM :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . access_wallnum = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . access_wallnum , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_ACCESS_SPRITENUM :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . access_spritenum = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . access_spritenum , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_KICKBACK_PIC :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . kickback_pic = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . kickback_pic , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_GOT_ACCESS :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . got_access = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . got_access , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_WEAPON_ANG :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . weapon_ang = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . weapon_ang , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_FIRSTAID_AMOUNT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . firstaid_amount = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . firstaid_amount , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_SOMETHINGONPLAYER :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . somethingonplayer = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . somethingonplayer , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_ON_CRANE :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . on_crane = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . on_crane , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_I :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . i = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . i , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_ONE_PARALLAX_SECTNUM :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . one_parallax_sectnum = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . one_parallax_sectnum , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_OVER_SHOULDER_ON :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . over_shoulder_on = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . over_shoulder_on , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_RANDOM_CLUB_FRAME :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . random_club_frame = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . random_club_frame , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_FIST_INCS :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . fist_incs = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . fist_incs , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_ONE_EIGHTY_COUNT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . one_eighty_count = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . one_eighty_count , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_CHEAT_PHASE :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . cheat_phase = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . cheat_phase , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_DUMMYPLAYERSPRITE :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . dummyplayersprite = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . dummyplayersprite , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_EXTRA_EXTRA8 :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . extra_extra8 = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . extra_extra8 , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_QUICK_KICK :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . quick_kick = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . quick_kick , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_HEAT_AMOUNT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . heat_amount = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . heat_amount , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_ACTORSQU :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . actorsqu = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . actorsqu , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_TIMEBEFOREEXIT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . timebeforeexit = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . timebeforeexit , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_CUSTOMEXITSOUND :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . customexitsound = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . customexitsound , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_WEAPRECS :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . weaprecs [ 16 ] = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . weaprecs [ 16 ] , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_WEAPRECCNT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . weapreccnt = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . weapreccnt , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_INTERFACE_TOGGLE_FLAG :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . interface_toggle_flag = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . interface_toggle_flag , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_ROTSCRNANG :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . rotscrnang = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . rotscrnang , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_DEAD_FLAG :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . dead_flag = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . dead_flag , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_SHOW_EMPTY_WEAPON :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . show_empty_weapon = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . show_empty_weapon , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_SCUBA_AMOUNT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . scuba_amount = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . scuba_amount , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_JETPACK_AMOUNT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . jetpack_amount = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . jetpack_amount , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_STEROIDS_AMOUNT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . steroids_amount = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . steroids_amount , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_SHIELD_AMOUNT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . shield_amount = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . shield_amount , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_HOLODUKE_ON :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . holoduke_on = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . holoduke_on , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_PYCOUNT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . pycount = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . pycount , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_WEAPON_POS :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . weapon_pos = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . weapon_pos , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_FRAG_PS :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . frag_ps = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . frag_ps , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_TRANSPORTER_HOLD :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . transporter_hold = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . transporter_hold , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_LAST_FULL_WEAPON :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . last_full_weapon = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . last_full_weapon , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_FOOTPRINTSHADE :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . footprintshade = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . footprintshade , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_BOOT_AMOUNT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . boot_amount = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . boot_amount , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_SCREAM_VOICE :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . scream_voice = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . scream_voice , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_GM :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . gm = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . gm , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_ON_WARPING_SECTOR :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . on_warping_sector = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . on_warping_sector , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_FOOTPRINTCOUNT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . footprintcount = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . footprintcount , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_HBOMB_ON :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . hbomb_on = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . hbomb_on , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_JUMPING_TOGGLE :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . jumping_toggle = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . jumping_toggle , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_RAPID_FIRE_HOLD :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . rapid_fire_hold = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . rapid_fire_hold , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_ON_GROUND :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . on_ground = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . on_ground , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_NAME :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . name [ 32 ] = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . name [ 32 ] , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_INVEN_ICON :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . inven_icon = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . inven_icon , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_BUTTONPALETTE :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . buttonpalette = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . buttonpalette , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_JETPACK_ON :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . jetpack_on = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . jetpack_on , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_SPRITEBRIDGE :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . spritebridge = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . spritebridge , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_LASTRANDOMSPOT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . lastrandomspot = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . lastrandomspot , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_SCUBA_ON :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . scuba_on = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . scuba_on , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_FOOTPRINTPAL :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . footprintpal = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . footprintpal , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_HEAT_ON :
2006-12-18 08:37:12 +00:00
if ( iSet )
{
if ( ps [ iPlayer ] . heat_on ! = lValue )
{
ps [ iPlayer ] . heat_on = lValue ;
setpal ( & ps [ iPlayer ] ) ;
}
}
2006-11-16 03:02:42 +00:00
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . heat_on , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_HOLSTER_WEAPON :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . holster_weapon = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . holster_weapon , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_FALLING_COUNTER :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . falling_counter = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . falling_counter , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_GOTWEAPON :
2006-12-18 09:32:17 +00:00
lTemp = lParm2 ;
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . gotweapon [ lTemp ] = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . gotweapon [ lTemp ] , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_REFRESH_INVENTORY :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . refresh_inventory = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . refresh_inventory , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
// case PLAYER_PALETTE:
2006-12-18 08:37:12 +00:00
// if(iSet)
2006-11-16 03:02:42 +00:00
// {
// ps[iPlayer].palette=lValue;
// }
// else
// {
2006-12-18 09:32:17 +00:00
// SetGameVarID(lVar2, ps[iPlayer].palette, g_i, g_p);
2006-11-16 03:02:42 +00:00
// }
// break;
case PLAYER_TOGGLE_KEY_FLAG :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . toggle_key_flag = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . toggle_key_flag , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_KNUCKLE_INCS :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . knuckle_incs = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . knuckle_incs , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_WALKING_SND_TOGGLE :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . walking_snd_toggle = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . walking_snd_toggle , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_PALOOKUP :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . palookup = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . palookup , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_HARD_LANDING :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . hard_landing = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . hard_landing , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_MAX_SECRET_ROOMS :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . max_secret_rooms = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . max_secret_rooms , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_SECRET_ROOMS :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . secret_rooms = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . secret_rooms , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_PALS :
2006-12-18 09:32:17 +00:00
lTemp = lParm2 ;
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . pals [ lTemp ] = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . pals [ lTemp ] , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_MAX_ACTORS_KILLED :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . max_actors_killed = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . max_actors_killed , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_ACTORS_KILLED :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . actors_killed = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . actors_killed , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_RETURN_TO_CENTER :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . return_to_center = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . return_to_center , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_RUNSPEED :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . runspeed = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . runspeed , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_SBS :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . sbs = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . sbs , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_RELOADING :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . reloading = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . reloading , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_AUTO_AIM :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . auto_aim = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . auto_aim , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-08-18 23:52:26 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_MOVEMENT_LOCK :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . movement_lock = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . movement_lock , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-11-15 01:16:55 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_SOUND_PITCH :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . sound_pitch = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . sound_pitch , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-11-15 01:16:55 +00:00
2006-11-16 03:02:42 +00:00
case PLAYER_WEAPONSWITCH :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . weaponswitch = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . weaponswitch , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
case PLAYER_TEAM :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
ps [ iPlayer ] . team = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , ps [ iPlayer ] . team , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
default :
break ;
2006-04-13 20:47:06 +00:00
}
return ;
}
2006-12-18 09:32:17 +00:00
static void DoInput ( int iSet , int lVar1 , int lLabelID , int lVar2 )
2006-04-13 20:47:06 +00:00
{
long lValue ;
2006-12-18 08:37:12 +00:00
int iPlayer = g_p ;
2006-04-13 20:47:06 +00:00
2006-12-18 09:32:17 +00:00
if ( lVar1 ! = g_iThisActorID )
iPlayer = GetGameVarID ( lVar1 , g_i , g_p ) ;
2006-04-13 20:47:06 +00:00
2006-11-13 23:12:47 +00:00
if ( iPlayer < 0 | | iPlayer > = MAXPLAYERS )
2006-04-13 20:47:06 +00:00
return ;
2006-12-18 09:32:17 +00:00
lValue = GetGameVarID ( lVar2 , g_i , g_p ) ;
2006-12-18 08:37:12 +00:00
2006-12-18 09:32:17 +00:00
switch ( lLabelID )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
case INPUT_AVEL :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sync [ iPlayer ] . avel = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sync [ iPlayer ] . avel , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case INPUT_HORZ :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sync [ iPlayer ] . horz = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sync [ iPlayer ] . horz , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case INPUT_FVEL :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sync [ iPlayer ] . fvel = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sync [ iPlayer ] . fvel , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case INPUT_SVEL :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sync [ iPlayer ] . svel = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sync [ iPlayer ] . svel , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case INPUT_BITS :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sync [ iPlayer ] . bits = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sync [ iPlayer ] . bits , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case INPUT_EXTBITS :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sync [ iPlayer ] . extbits = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sync [ iPlayer ] . extbits , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
default :
break ;
2006-04-13 20:47:06 +00:00
}
return ;
}
2006-12-18 09:32:17 +00:00
static void DoWall ( int iSet , int lVar1 , int lLabelID , int lVar2 )
2006-04-13 20:47:06 +00:00
{
long lValue ;
2006-12-18 09:32:17 +00:00
int iWall = GetGameVarID ( lVar1 , g_i , g_p ) ;
2006-04-13 20:47:06 +00:00
2006-11-13 23:12:47 +00:00
if ( iWall < 0 | | iWall > = MAXWALLS )
2006-04-13 20:47:06 +00:00
return ;
2006-12-18 09:32:17 +00:00
lValue = GetGameVarID ( lVar2 , g_i , g_p ) ;
2006-12-18 08:37:12 +00:00
2006-12-18 09:32:17 +00:00
switch ( lLabelID )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
case WALL_X :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
wall [ iWall ] . x = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , wall [ iWall ] . x , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case WALL_Y :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
wall [ iWall ] . y = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , wall [ iWall ] . y , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case WALL_POINT2 :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
wall [ iWall ] . point2 = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , wall [ iWall ] . point2 , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case WALL_NEXTWALL :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
wall [ iWall ] . nextwall = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , wall [ iWall ] . nextwall , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case WALL_NEXTSECTOR :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
wall [ iWall ] . nextsector = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , wall [ iWall ] . nextsector , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case WALL_CSTAT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
wall [ iWall ] . cstat = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , wall [ iWall ] . cstat , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case WALL_PICNUM :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
wall [ iWall ] . picnum = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , wall [ iWall ] . picnum , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case WALL_OVERPICNUM :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
wall [ iWall ] . overpicnum = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , wall [ iWall ] . overpicnum , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case WALL_SHADE :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
wall [ iWall ] . shade = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , wall [ iWall ] . shade , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case WALL_PAL :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
wall [ iWall ] . pal = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , wall [ iWall ] . pal , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case WALL_XREPEAT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
wall [ iWall ] . xrepeat = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , wall [ iWall ] . xrepeat , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case WALL_YREPEAT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
wall [ iWall ] . yrepeat = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , wall [ iWall ] . yrepeat , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case WALL_XPANNING :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
wall [ iWall ] . xpanning = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , wall [ iWall ] . xpanning , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case WALL_YPANNING :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
wall [ iWall ] . ypanning = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , wall [ iWall ] . ypanning , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case WALL_LOTAG :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
wall [ iWall ] . lotag = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , wall [ iWall ] . lotag , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case WALL_HITAG :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
wall [ iWall ] . hitag = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , wall [ iWall ] . hitag , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case WALL_EXTRA :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
wall [ iWall ] . extra = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , wall [ iWall ] . extra , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
default :
break ;
2006-04-13 20:47:06 +00:00
}
return ;
}
2006-12-18 09:32:17 +00:00
static void DoSector ( int iSet , int lVar1 , int lLabelID , int lVar2 )
2006-04-13 20:47:06 +00:00
{
long lValue ;
2006-12-18 08:37:12 +00:00
int iSector = sprite [ g_i ] . sectnum ;
2006-04-13 20:47:06 +00:00
2006-12-18 09:32:17 +00:00
if ( lVar1 ! = g_iThisActorID )
iSector = GetGameVarID ( lVar1 , g_i , g_p ) ;
2006-04-13 20:47:06 +00:00
2006-11-13 23:12:47 +00:00
if ( iSector < 0 | | iSector > = MAXSECTORS )
2006-04-13 20:47:06 +00:00
return ;
2006-12-18 09:32:17 +00:00
lValue = GetGameVarID ( lVar2 , g_i , g_p ) ;
2006-04-13 20:47:06 +00:00
2006-12-18 09:32:17 +00:00
switch ( lLabelID )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
case SECTOR_WALLPTR :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sector [ iSector ] . wallptr = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sector [ iSector ] . wallptr , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case SECTOR_WALLNUM :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sector [ iSector ] . wallnum = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sector [ iSector ] . wallnum , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case SECTOR_CEILINGZ :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sector [ iSector ] . ceilingz = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sector [ iSector ] . ceilingz , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case SECTOR_FLOORZ :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sector [ iSector ] . floorz = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sector [ iSector ] . floorz , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case SECTOR_CEILINGSTAT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sector [ iSector ] . ceilingstat = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sector [ iSector ] . ceilingstat , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case SECTOR_FLOORSTAT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sector [ iSector ] . floorstat = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sector [ iSector ] . floorstat , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case SECTOR_CEILINGPICNUM :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sector [ iSector ] . ceilingpicnum = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sector [ iSector ] . ceilingpicnum , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case SECTOR_CEILINGSLOPE :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sector [ iSector ] . ceilingheinum = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sector [ iSector ] . ceilingheinum , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case SECTOR_CEILINGSHADE :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sector [ iSector ] . ceilingshade = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sector [ iSector ] . ceilingshade , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case SECTOR_CEILINGPAL :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sector [ iSector ] . ceilingpal = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sector [ iSector ] . ceilingpal , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case SECTOR_CEILINGXPANNING :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sector [ iSector ] . ceilingxpanning = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sector [ iSector ] . ceilingypanning , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case SECTOR_FLOORPICNUM :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sector [ iSector ] . floorpicnum = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sector [ iSector ] . floorpicnum , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case SECTOR_FLOORSLOPE :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sector [ iSector ] . floorheinum = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sector [ iSector ] . floorheinum , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case SECTOR_FLOORSHADE :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sector [ iSector ] . floorshade = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sector [ iSector ] . floorshade , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case SECTOR_FLOORPAL :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sector [ iSector ] . floorpal = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sector [ iSector ] . floorpal , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case SECTOR_FLOORXPANNING :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sector [ iSector ] . floorxpanning = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sector [ iSector ] . floorxpanning , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case SECTOR_FLOORYPANNING :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sector [ iSector ] . floorypanning = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sector [ iSector ] . floorypanning , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case SECTOR_VISIBILITY :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sector [ iSector ] . visibility = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sector [ iSector ] . visibility , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case SECTOR_ALIGNTO :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sector [ iSector ] . filler = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sector [ iSector ] . filler , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case SECTOR_LOTAG :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sector [ iSector ] . lotag = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sector [ iSector ] . lotag , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case SECTOR_HITAG :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sector [ iSector ] . hitag = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sector [ iSector ] . hitag , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case SECTOR_EXTRA :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sector [ iSector ] . extra = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sector [ iSector ] . extra , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
default :
break ;
2006-04-13 20:47:06 +00:00
}
return ;
}
2006-12-18 09:32:17 +00:00
static void DoActor ( int iSet , int lVar1 , int lLabelID , int lVar2 , int lParm2 )
2006-04-13 20:47:06 +00:00
{
long lValue ;
long lTemp ;
2006-12-18 08:37:12 +00:00
int iActor = g_i ;
2006-04-13 20:47:06 +00:00
2006-12-18 09:32:17 +00:00
if ( lVar1 ! = g_iThisActorID )
iActor = GetGameVarID ( lVar1 , g_i , g_p ) ;
2006-04-13 20:47:06 +00:00
2006-11-13 23:12:47 +00:00
if ( iActor < 0 | | iActor > = MAXSPRITES )
2006-04-13 20:47:06 +00:00
return ;
2006-12-18 09:32:17 +00:00
lValue = GetGameVarID ( lVar2 , g_i , g_p ) ;
2006-12-18 08:37:12 +00:00
2006-12-18 09:32:17 +00:00
switch ( lLabelID )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
case ACTOR_X :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sprite [ iActor ] . x = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sprite [ iActor ] . x , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_Y :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sprite [ iActor ] . y = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sprite [ iActor ] . y , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_Z :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sprite [ iActor ] . z = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sprite [ iActor ] . z , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_CSTAT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sprite [ iActor ] . cstat = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sprite [ iActor ] . cstat , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_PICNUM :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sprite [ iActor ] . picnum = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sprite [ iActor ] . picnum , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_SHADE :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sprite [ iActor ] . shade = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sprite [ iActor ] . shade , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_PAL :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sprite [ iActor ] . pal = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sprite [ iActor ] . pal , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_CLIPDIST :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sprite [ iActor ] . clipdist = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sprite [ iActor ] . clipdist , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_DETAIL :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sprite [ iActor ] . filler = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sprite [ iActor ] . filler , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_XREPEAT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sprite [ iActor ] . xrepeat = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sprite [ iActor ] . xrepeat , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_YREPEAT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sprite [ iActor ] . yrepeat = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sprite [ iActor ] . yrepeat , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_XOFFSET :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sprite [ iActor ] . xoffset = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sprite [ iActor ] . xoffset , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_YOFFSET :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sprite [ iActor ] . yoffset = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sprite [ iActor ] . yoffset , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_SECTNUM :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
changespritesect ( iActor , lValue ) ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sprite [ iActor ] . sectnum , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_STATNUM :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
changespritestat ( iActor , lValue ) ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sprite [ iActor ] . statnum , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_ANG :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sprite [ iActor ] . ang = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sprite [ iActor ] . ang , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_OWNER :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sprite [ iActor ] . owner = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sprite [ iActor ] . owner , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_XVEL :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sprite [ iActor ] . xvel = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sprite [ iActor ] . xvel , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_YVEL :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sprite [ iActor ] . yvel = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sprite [ iActor ] . yvel , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_ZVEL :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sprite [ iActor ] . zvel = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sprite [ iActor ] . zvel , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_LOTAG :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sprite [ iActor ] . lotag = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sprite [ iActor ] . lotag , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_HITAG :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sprite [ iActor ] . hitag = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sprite [ iActor ] . hitag , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_EXTRA :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
sprite [ iActor ] . extra = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , sprite [ iActor ] . extra , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_HTCGG :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
hittype [ iActor ] . cgg = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , hittype [ iActor ] . cgg , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_HTPICNUM :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
hittype [ iActor ] . picnum = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , hittype [ iActor ] . picnum , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_HTANG :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
hittype [ iActor ] . ang = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , hittype [ iActor ] . ang , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_HTEXTRA :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
hittype [ iActor ] . extra = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , hittype [ iActor ] . extra , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_HTOWNER :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
hittype [ iActor ] . owner = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , hittype [ iActor ] . owner , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_HTMOVFLAG :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
hittype [ iActor ] . movflag = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , hittype [ iActor ] . movflag , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_HTTEMPANG :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
hittype [ iActor ] . tempang = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , hittype [ iActor ] . tempang , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_HTACTORSTAYPUT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
hittype [ iActor ] . actorstayput = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , hittype [ iActor ] . actorstayput , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_HTDISPICNUM :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
hittype [ iActor ] . dispicnum = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , hittype [ iActor ] . dispicnum , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_HTTIMETOSLEEP :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
hittype [ iActor ] . timetosleep = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , hittype [ iActor ] . timetosleep , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_HTFLOORZ :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
hittype [ iActor ] . floorz = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , hittype [ iActor ] . floorz , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_HTCEILINGZ :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
hittype [ iActor ] . ceilingz = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , hittype [ iActor ] . ceilingz , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_HTLASTVX :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
hittype [ iActor ] . lastvx = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , hittype [ iActor ] . lastvx , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_HTLASTVY :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
hittype [ iActor ] . lastvy = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , hittype [ iActor ] . lastvy , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_HTBPOSX :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
hittype [ iActor ] . bposx = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , hittype [ iActor ] . bposx , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_HTBPOSY :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
hittype [ iActor ] . bposy = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , hittype [ iActor ] . bposy , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_HTBPOSZ :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
hittype [ iActor ] . bposz = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , hittype [ iActor ] . bposz , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_HTG_T :
2006-12-18 09:32:17 +00:00
lTemp = lParm2 ;
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
hittype [ iActor ] . temp_data [ lTemp ] = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , hittype [ iActor ] . temp_data [ lTemp ] , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_ANGOFF :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
spriteext [ iActor ] . angoff = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , spriteext [ iActor ] . angoff , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_PITCH :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
spriteext [ iActor ] . pitch = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , spriteext [ iActor ] . pitch , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_ROLL :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
spriteext [ iActor ] . roll = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , spriteext [ iActor ] . roll , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_MDXOFF :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
spriteext [ iActor ] . xoff = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , spriteext [ iActor ] . xoff , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_MDYOFF :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
spriteext [ iActor ] . yoff = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , spriteext [ iActor ] . yoff , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case ACTOR_MDZOFF :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
spriteext [ iActor ] . zoff = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , spriteext [ iActor ] . zoff , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
default :
break ;
2006-04-13 20:47:06 +00:00
}
return ;
}
2006-12-18 09:32:17 +00:00
static void DoProjectile ( int iSet , int lVar1 , int lLabelID , int lVar2 )
2006-04-13 20:47:06 +00:00
{
2006-12-18 09:32:17 +00:00
long lValue , proj = lVar1 ;
2006-04-18 03:11:38 +00:00
2006-11-13 23:12:47 +00:00
if ( proj < 0 | | proj > = MAXTILES )
2006-04-18 03:11:38 +00:00
return ;
2006-12-18 09:32:17 +00:00
lValue = GetGameVarID ( lVar2 , g_i , g_p ) ;
2006-04-13 20:47:06 +00:00
2006-12-18 09:32:17 +00:00
switch ( lLabelID )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
case PROJ_WORKSLIKE :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
projectile [ proj ] . workslike = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , projectile [ proj ] . workslike , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_SPAWNS :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
projectile [ proj ] . spawns = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , projectile [ proj ] . spawns , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_SXREPEAT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
projectile [ proj ] . sxrepeat = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , projectile [ proj ] . sxrepeat , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_SYREPEAT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
projectile [ proj ] . syrepeat = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , projectile [ proj ] . syrepeat , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_SOUND :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
projectile [ proj ] . sound = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , projectile [ proj ] . sound , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_ISOUND :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
projectile [ proj ] . isound = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , projectile [ proj ] . isound , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_VEL :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
projectile [ proj ] . vel = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , projectile [ proj ] . vel , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_EXTRA :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
projectile [ proj ] . extra = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , projectile [ proj ] . extra , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_DECAL :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
projectile [ proj ] . decal = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , projectile [ proj ] . decal , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_TRAIL :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
projectile [ proj ] . trail = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , projectile [ proj ] . trail , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_TXREPEAT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
projectile [ proj ] . txrepeat = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , projectile [ proj ] . txrepeat , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_TYREPEAT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
projectile [ proj ] . tyrepeat = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , projectile [ proj ] . tyrepeat , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_TOFFSET :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
projectile [ proj ] . toffset = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , projectile [ proj ] . toffset , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_TNUM :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
projectile [ proj ] . tnum = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , projectile [ proj ] . tnum , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_DROP :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
projectile [ proj ] . drop = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , projectile [ proj ] . drop , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_CSTAT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
projectile [ proj ] . cstat = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , projectile [ proj ] . cstat , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_CLIPDIST :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
projectile [ proj ] . clipdist = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , projectile [ proj ] . clipdist , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_SHADE :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
projectile [ proj ] . shade = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , projectile [ proj ] . shade , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_XREPEAT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
projectile [ proj ] . xrepeat = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , projectile [ proj ] . xrepeat , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_YREPEAT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
projectile [ proj ] . yrepeat = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , projectile [ proj ] . yrepeat , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_PAL :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
projectile [ proj ] . pal = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , projectile [ proj ] . pal , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_EXTRA_RAND :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
projectile [ proj ] . extra_rand = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , projectile [ proj ] . extra_rand , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_HITRADIUS :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
projectile [ proj ] . hitradius = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , projectile [ proj ] . hitradius , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_VEL_MULT :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
projectile [ proj ] . velmult = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , projectile [ proj ] . velmult , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_OFFSET :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
projectile [ proj ] . offset = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , projectile [ proj ] . offset , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_BOUNCES :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
projectile [ proj ] . bounces = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , projectile [ proj ] . bounces , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_BSOUND :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
projectile [ proj ] . bsound = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , projectile [ proj ] . bsound , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case PROJ_RANGE :
2006-12-18 08:37:12 +00:00
if ( iSet )
2006-11-16 03:02:42 +00:00
projectile [ proj ] . range = lValue ;
else
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , projectile [ proj ] . range , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
default :
break ;
2006-04-13 20:47:06 +00:00
}
return ;
}
2006-12-18 08:37:12 +00:00
static int parse ( void ) ;
2006-12-10 03:15:56 +00:00
2006-12-20 03:27:25 +00:00
void OnEvent ( int iEventID , int iActor , int iPlayer , long lDist )
2006-04-13 20:47:06 +00:00
{
2006-12-20 03:27:25 +00:00
int og_i , og_p , okillit_flag ;
long og_x , * og_t , * oinsptr ;
2006-04-13 20:47:06 +00:00
spritetype * og_sp ;
2006-11-14 21:35:50 +00:00
if ( iEventID > = MAXGAMEEVENTS )
2006-04-13 20:47:06 +00:00
{
AddLog ( " Invalid Event ID " ) ;
return ;
}
2006-11-14 21:35:50 +00:00
if ( apScriptGameEvent [ iEventID ] = = 0 )
2006-04-13 20:47:06 +00:00
{
//Bsprintf(g_szBuf,"No event found for %d",iEventID);
//AddLog(g_szBuf);
return ;
}
// save current values...
og_i = g_i ;
og_p = g_p ;
og_x = g_x ;
og_sp = g_sp ;
og_t = g_t ;
okillit_flag = killit_flag ;
oinsptr = insptr ;
2006-12-20 03:27:25 +00:00
g_i = iActor ; // current sprite ID
g_p = iPlayer ; // current player ID
2006-04-13 20:47:06 +00:00
g_x = lDist ; // ?
g_sp = & sprite [ g_i ] ;
g_t = & hittype [ g_i ] . temp_data [ 0 ] ;
insptr = ( apScriptGameEvent [ iEventID ] ) ;
//Bsprintf(g_szBuf,"Executing event for %d at %lX",iEventID, insptr);
//AddLog(g_szBuf);
killit_flag = 0 ;
2006-12-20 03:27:25 +00:00
while ( 1 ) if ( parse ( ) ) break ;
2006-11-13 23:12:47 +00:00
if ( killit_flag = = 1 )
{
// if player was set to squish, first stop that...
2006-11-14 21:35:50 +00:00
if ( g_p > = 0 )
2006-11-13 23:12:47 +00:00
{
if ( ps [ g_p ] . actorsqu = = g_i )
ps [ g_p ] . actorsqu = - 1 ;
}
deletesprite ( g_i ) ;
}
2006-04-13 20:47:06 +00:00
// restore old values...
g_i = og_i ;
g_p = og_p ;
g_x = og_x ;
g_sp = og_sp ;
g_t = og_t ;
killit_flag = okillit_flag ;
insptr = oinsptr ;
//AddLog("End of Execution");
}
2006-12-10 03:15:56 +00:00
static long ifsquished ( short i , short p )
{
sectortype * sc ;
char squishme ;
long floorceildist ;
if ( PN = = APLAYER & & ud . clipping )
return 0 ;
sc = & sector [ SECT ] ;
floorceildist = sc - > floorz - sc - > ceilingz ;
if ( sc - > lotag ! = 23 )
{
2006-12-18 08:37:12 +00:00
squishme = floorceildist < ( 12 < < 8 ) ; // && (sc->lotag&32768) == 0;
2006-12-10 03:15:56 +00:00
if ( sprite [ i ] . pal = = 1 )
squishme = floorceildist < ( 32 < < 8 ) & & ( sc - > lotag & 32768 ) = = 0 ;
}
else squishme = 0 ;
if ( squishme )
{
FTA ( 10 , & ps [ p ] ) ;
if ( badguy ( & sprite [ i ] ) ) sprite [ i ] . xvel = 0 ;
if ( sprite [ i ] . pal = = 1 )
{
hittype [ i ] . picnum = SHOTSPARK1 ;
hittype [ i ] . extra = 1 ;
return 0 ;
}
return 1 ;
}
return 0 ;
}
2006-12-10 06:49:01 +00:00
static void forceplayerangle ( struct player_struct * p )
{
2006-12-20 03:27:25 +00:00
int n = 128 - ( TRAND & 255 ) ;
2006-12-10 06:49:01 +00:00
p - > horiz + = 64 ;
p - > return_to_center = 9 ;
p - > look_ang = n > > 1 ;
p - > rotscrnang = n > > 1 ;
}
2006-12-10 03:15:56 +00:00
static char dodge ( spritetype * s )
2006-04-13 20:47:06 +00:00
{
2006-12-20 03:27:25 +00:00
long bx , by , bxvect , byvect , d , i ;
long mx = s - > x , my = s - > y ;
long mxvect = sintable [ ( s - > ang + 512 ) & 2047 ] ;
long myvect = sintable [ s - > ang & 2047 ] ;
2006-04-13 20:47:06 +00:00
2006-11-13 23:12:47 +00:00
for ( i = headspritestat [ 4 ] ; i > = 0 ; i = nextspritestat [ i ] ) //weapons list
2006-04-13 20:47:06 +00:00
{
2006-11-14 21:35:50 +00:00
if ( OW = = i | | SECT ! = s - > sectnum )
2006-04-13 20:47:06 +00:00
continue ;
bx = SX - mx ;
by = SY - my ;
2006-11-15 01:16:55 +00:00
bxvect = sintable [ ( SA + 512 ) & 2047 ] ;
byvect = sintable [ SA & 2047 ] ;
2006-04-13 20:47:06 +00:00
if ( mxvect * bx + myvect * by > = 0 )
if ( bxvect * bx + byvect * by < 0 )
{
d = bxvect * by - byvect * bx ;
if ( klabs ( d ) < 65536 * 64 )
{
s - > ang - = 512 + ( TRAND & 1024 ) ;
return 1 ;
}
}
}
return 0 ;
}
2006-12-20 03:27:25 +00:00
int furthestangle ( int iActor , int angs )
2006-04-13 20:47:06 +00:00
{
2006-12-20 03:27:25 +00:00
short hitsect , hitwall , hitspr , furthest_angle = 0 ;
long hx , hy , hz , d ;
spritetype * s = & sprite [ iActor ] ;
long greatestd = - ( 1 < < 30 ) ;
int angincs = 2048 / angs , j ;
2006-04-13 20:47:06 +00:00
2006-11-13 23:12:47 +00:00
if ( s - > picnum ! = APLAYER )
2006-11-14 21:35:50 +00:00
if ( ( g_t [ 0 ] & 63 ) > 2 ) return ( s - > ang + 1024 ) ;
2006-04-13 20:47:06 +00:00
2006-11-13 23:12:47 +00:00
for ( j = s - > ang ; j < ( 2048 + s - > ang ) ; j + = angincs )
2006-04-13 20:47:06 +00:00
{
hitscan ( s - > x , s - > y , s - > z - ( 8 < < 8 ) , s - > sectnum ,
sintable [ ( j + 512 ) & 2047 ] ,
sintable [ j & 2047 ] , 0 ,
& hitsect , & hitwall , & hitspr , & hx , & hy , & hz , CLIPMASK1 ) ;
d = klabs ( hx - s - > x ) + klabs ( hy - s - > y ) ;
2006-11-13 23:12:47 +00:00
if ( d > greatestd )
2006-04-13 20:47:06 +00:00
{
greatestd = d ;
furthest_angle = j ;
}
}
return ( furthest_angle & 2047 ) ;
}
2006-12-20 03:27:25 +00:00
int furthestcanseepoint ( int iActor , spritetype * ts , long * dax , long * day )
2006-04-13 20:47:06 +00:00
{
2006-12-20 03:27:25 +00:00
short hitsect , hitwall , hitspr , angincs ;
2006-04-13 20:47:06 +00:00
long hx , hy , hz , d , da ; //, d, cd, ca,tempx,tempy,cx,cy;
2006-12-20 03:27:25 +00:00
int j ;
spritetype * s = & sprite [ iActor ] ;
2006-04-13 20:47:06 +00:00
2006-11-14 21:35:50 +00:00
if ( ( g_t [ 0 ] & 63 ) ) return - 1 ;
2006-04-13 20:47:06 +00:00
2006-11-13 23:12:47 +00:00
if ( ud . multimode < 2 & & ud . player_skill < 3 )
2006-04-13 20:47:06 +00:00
angincs = 2048 / 2 ;
else angincs = 2048 / ( 1 + ( TRAND & 1 ) ) ;
2006-11-13 23:12:47 +00:00
for ( j = ts - > ang ; j < ( 2048 + ts - > ang ) ; j + = ( angincs - ( TRAND & 511 ) ) )
2006-04-13 20:47:06 +00:00
{
hitscan ( ts - > x , ts - > y , ts - > z - ( 16 < < 8 ) , ts - > sectnum ,
sintable [ ( j + 512 ) & 2047 ] ,
sintable [ j & 2047 ] , 16384 - ( TRAND & 32767 ) ,
& hitsect , & hitwall , & hitspr , & hx , & hy , & hz , CLIPMASK1 ) ;
d = klabs ( hx - ts - > x ) + klabs ( hy - ts - > y ) ;
da = klabs ( hx - s - > x ) + klabs ( hy - s - > y ) ;
2006-11-14 21:35:50 +00:00
if ( d < da )
2006-11-13 23:12:47 +00:00
if ( cansee ( hx , hy , hz , hitsect , s - > x , s - > y , s - > z - ( 16 < < 8 ) , s - > sectnum ) )
2006-04-13 20:47:06 +00:00
{
* dax = hx ;
* day = hy ;
return hitsect ;
}
}
return - 1 ;
}
2006-12-20 03:27:25 +00:00
void getglobalz ( int iActor )
2006-04-13 20:47:06 +00:00
{
long hz , lz , zr ;
2006-12-20 03:27:25 +00:00
spritetype * s = & sprite [ iActor ] ;
2006-04-13 20:47:06 +00:00
2006-11-14 21:35:50 +00:00
if ( s - > statnum = = 10 | | s - > statnum = = 6 | | s - > statnum = = 2 | | s - > statnum = = 1 | | s - > statnum = = 4 )
2006-04-13 20:47:06 +00:00
{
2006-12-18 08:37:12 +00:00
zr = 127L ;
2006-11-13 23:12:47 +00:00
if ( s - > statnum = = 4 )
2006-04-13 20:47:06 +00:00
zr = 4L ;
2006-12-20 03:27:25 +00:00
getzrange ( s - > x , s - > y , s - > z - ( FOURSLEIGHT ) , s - > sectnum , & hittype [ iActor ] . ceilingz , & hz , & hittype [ iActor ] . floorz , & lz , zr , CLIPMASK0 ) ;
2006-04-13 20:47:06 +00:00
2006-11-14 21:35:50 +00:00
if ( ( lz & 49152 ) = = 49152 & & ( sprite [ lz & ( MAXSPRITES - 1 ) ] . cstat & 48 ) = = 0 )
2006-04-13 20:47:06 +00:00
{
lz & = ( MAXSPRITES - 1 ) ;
2006-11-14 21:35:50 +00:00
if ( badguy ( & sprite [ lz ] ) & & sprite [ lz ] . pal ! = 1 )
2006-04-13 20:47:06 +00:00
{
2006-11-14 21:35:50 +00:00
if ( s - > statnum ! = 4 )
2006-04-13 20:47:06 +00:00
{
2006-12-20 03:27:25 +00:00
hittype [ iActor ] . dispicnum = - 4 ; // No shadows on actors
2006-04-13 20:47:06 +00:00
s - > xvel = - 256 ;
2006-12-20 03:27:25 +00:00
ssp ( iActor , CLIPMASK0 ) ;
2006-04-13 20:47:06 +00:00
}
}
2006-11-14 21:35:50 +00:00
else if ( sprite [ lz ] . picnum = = APLAYER & & badguy ( s ) )
2006-04-13 20:47:06 +00:00
{
2006-12-20 03:27:25 +00:00
hittype [ iActor ] . dispicnum = - 4 ; // No shadows on actors
2006-04-13 20:47:06 +00:00
s - > xvel = - 256 ;
2006-12-20 03:27:25 +00:00
ssp ( iActor , CLIPMASK0 ) ;
2006-04-13 20:47:06 +00:00
}
2006-11-13 23:12:47 +00:00
else if ( s - > statnum = = 4 & & sprite [ lz ] . picnum = = APLAYER )
if ( s - > owner = = lz )
2006-04-13 20:47:06 +00:00
{
2006-12-20 03:27:25 +00:00
hittype [ iActor ] . ceilingz = sector [ s - > sectnum ] . ceilingz ;
hittype [ iActor ] . floorz = sector [ s - > sectnum ] . floorz ;
2006-04-13 20:47:06 +00:00
}
}
}
else
{
2006-12-20 03:27:25 +00:00
hittype [ iActor ] . ceilingz = sector [ s - > sectnum ] . ceilingz ;
hittype [ iActor ] . floorz = sector [ s - > sectnum ] . floorz ;
2006-04-13 20:47:06 +00:00
}
}
2006-12-20 03:27:25 +00:00
void makeitfall ( int iActor )
2006-04-13 20:47:06 +00:00
{
2006-12-20 03:27:25 +00:00
spritetype * s = & sprite [ iActor ] ;
2006-04-13 20:47:06 +00:00
long hz , lz , c ;
2006-11-14 21:35:50 +00:00
if ( floorspace ( s - > sectnum ) )
2006-04-13 20:47:06 +00:00
c = 0 ;
else
{
2006-11-14 21:35:50 +00:00
if ( ceilingspace ( s - > sectnum ) | | sector [ s - > sectnum ] . lotag = = 2 )
2006-04-13 20:47:06 +00:00
c = gc / 6 ;
else c = gc ;
}
2006-11-14 21:35:50 +00:00
if ( ( s - > statnum = = 1 | | s - > statnum = = 10 | | s - > statnum = = 2 | | s - > statnum = = 6 ) )
2006-12-20 03:27:25 +00:00
getzrange ( s - > x , s - > y , s - > z - ( FOURSLEIGHT ) , s - > sectnum , & hittype [ iActor ] . ceilingz , & hz , & hittype [ iActor ] . floorz , & lz , 127L , CLIPMASK0 ) ;
2006-04-13 20:47:06 +00:00
else
{
2006-12-20 03:27:25 +00:00
hittype [ iActor ] . ceilingz = sector [ s - > sectnum ] . ceilingz ;
hittype [ iActor ] . floorz = sector [ s - > sectnum ] . floorz ;
2006-04-13 20:47:06 +00:00
}
2006-12-20 03:27:25 +00:00
if ( s - > z < hittype [ iActor ] . floorz - ( FOURSLEIGHT ) )
2006-04-13 20:47:06 +00:00
{
2006-11-14 21:35:50 +00:00
if ( sector [ s - > sectnum ] . lotag = = 2 & & s - > zvel > 3122 )
2006-04-13 20:47:06 +00:00
s - > zvel = 3144 ;
2006-11-13 23:12:47 +00:00
if ( s - > zvel < 6144 )
2006-04-13 20:47:06 +00:00
s - > zvel + = c ;
else s - > zvel = 6144 ;
s - > z + = s - > zvel ;
}
2006-12-20 03:27:25 +00:00
if ( s - > z > = hittype [ iActor ] . floorz - ( FOURSLEIGHT ) )
2006-04-13 20:47:06 +00:00
{
2006-12-20 03:27:25 +00:00
s - > z = hittype [ iActor ] . floorz - FOURSLEIGHT ;
2006-04-13 20:47:06 +00:00
s - > zvel = 0 ;
}
}
2006-12-20 03:27:25 +00:00
int getincangle ( int a , int na )
2006-04-13 20:47:06 +00:00
{
a & = 2047 ;
na & = 2047 ;
2006-11-13 23:12:47 +00:00
if ( klabs ( a - na ) < 1024 )
2006-04-13 20:47:06 +00:00
return ( na - a ) ;
2006-12-18 08:37:12 +00:00
if ( na > 1024 ) na - = 2048 ;
if ( a > 1024 ) a - = 2048 ;
na - = 2048 ;
a - = 2048 ;
return ( na - a ) ;
2006-04-13 20:47:06 +00:00
}
2006-12-20 03:27:25 +00:00
static void alterang ( int a )
2006-04-13 20:47:06 +00:00
{
2006-12-20 03:27:25 +00:00
short aang , angdif , goalang ;
2006-04-13 20:47:06 +00:00
long ticselapsed , * moveptr ;
2006-12-20 03:27:25 +00:00
int j ;
2006-04-13 20:47:06 +00:00
moveptr = ( long * ) g_t [ 1 ] ;
ticselapsed = ( g_t [ 0 ] ) & 31 ;
aang = g_sp - > ang ;
g_sp - > xvel + = ( * moveptr - g_sp - > xvel ) / 5 ;
2006-11-13 23:12:47 +00:00
if ( g_sp - > zvel < 648 ) g_sp - > zvel + = ( ( * ( moveptr + 1 ) < < 4 ) - g_sp - > zvel ) / 5 ;
2006-04-13 20:47:06 +00:00
2006-11-13 23:12:47 +00:00
if ( a & seekplayer )
2006-04-13 20:47:06 +00:00
{
j = ps [ g_p ] . holoduke_on ;
// NOTE: looks like 'owner' is set to target sprite ID...
2006-11-14 21:35:50 +00:00
if ( j > = 0 & & cansee ( sprite [ j ] . x , sprite [ j ] . y , sprite [ j ] . z , sprite [ j ] . sectnum , g_sp - > x , g_sp - > y , g_sp - > z , g_sp - > sectnum ) )
2006-04-13 20:47:06 +00:00
g_sp - > owner = j ;
else g_sp - > owner = ps [ g_p ] . i ;
2006-11-13 23:12:47 +00:00
if ( sprite [ g_sp - > owner ] . picnum = = APLAYER )
2006-04-13 20:47:06 +00:00
goalang = getangle ( hittype [ g_i ] . lastvx - g_sp - > x , hittype [ g_i ] . lastvy - g_sp - > y ) ;
else
goalang = getangle ( sprite [ g_sp - > owner ] . x - g_sp - > x , sprite [ g_sp - > owner ] . y - g_sp - > y ) ;
2006-11-13 23:12:47 +00:00
if ( g_sp - > xvel & & g_sp - > picnum ! = DRONE )
2006-04-13 20:47:06 +00:00
{
angdif = getincangle ( aang , goalang ) ;
2006-11-13 23:12:47 +00:00
if ( ticselapsed < 2 )
2006-04-13 20:47:06 +00:00
{
2006-11-14 21:35:50 +00:00
if ( klabs ( angdif ) < 256 )
2006-04-13 20:47:06 +00:00
{
j = 128 - ( TRAND & 256 ) ;
g_sp - > ang + = j ;
2006-11-14 21:35:50 +00:00
if ( hits ( g_i ) < 844 )
2006-04-13 20:47:06 +00:00
g_sp - > ang - = j ;
}
}
2006-11-13 23:12:47 +00:00
else if ( ticselapsed > 18 & & ticselapsed < 26 ) // choose
2006-04-13 20:47:06 +00:00
{
2006-11-13 23:12:47 +00:00
if ( klabs ( angdif > > 2 ) < 128 ) g_sp - > ang = goalang ;
2006-04-13 20:47:06 +00:00
else g_sp - > ang + = angdif > > 2 ;
}
}
else g_sp - > ang = goalang ;
}
2006-11-13 23:12:47 +00:00
if ( ticselapsed < 1 )
2006-04-13 20:47:06 +00:00
{
j = 2 ;
2006-11-13 23:12:47 +00:00
if ( a & furthestdir )
2006-04-13 20:47:06 +00:00
{
goalang = furthestangle ( g_i , j ) ;
g_sp - > ang = goalang ;
g_sp - > owner = ps [ g_p ] . i ;
}
2006-11-13 23:12:47 +00:00
if ( a & fleeenemy )
2006-04-13 20:47:06 +00:00
{
goalang = furthestangle ( g_i , j ) ;
g_sp - > ang = goalang ; // += angdif; // = getincangle(aang,goalang)>>1;
}
}
}
2006-12-10 03:15:56 +00:00
static void move ( void )
2006-04-13 20:47:06 +00:00
{
long l , * moveptr ;
2006-04-22 22:33:52 +00:00
short a , goalang , angdif ;
2006-04-13 20:47:06 +00:00
long daxvel ;
a = g_sp - > hitag ;
2006-11-13 23:12:47 +00:00
if ( a = = - 1 ) a = 0 ;
2006-04-13 20:47:06 +00:00
g_t [ 0 ] + + ;
2006-11-13 23:12:47 +00:00
if ( a & face_player )
2006-04-13 20:47:06 +00:00
{
2006-11-13 23:12:47 +00:00
if ( ps [ g_p ] . newowner > = 0 )
2006-04-13 20:47:06 +00:00
goalang = getangle ( ps [ g_p ] . oposx - g_sp - > x , ps [ g_p ] . oposy - g_sp - > y ) ;
else goalang = getangle ( ps [ g_p ] . posx - g_sp - > x , ps [ g_p ] . posy - g_sp - > y ) ;
angdif = getincangle ( g_sp - > ang , goalang ) > > 2 ;
2006-11-13 23:12:47 +00:00
if ( angdif > - 8 & & angdif < 0 ) angdif = 0 ;
2006-04-13 20:47:06 +00:00
g_sp - > ang + = angdif ;
}
2006-11-13 23:12:47 +00:00
if ( a & spin )
2006-11-14 21:35:50 +00:00
g_sp - > ang + = sintable [ ( ( g_t [ 0 ] < < 3 ) & 2047 ) ] > > 6 ;
2006-04-13 20:47:06 +00:00
2006-11-13 23:12:47 +00:00
if ( a & face_player_slow )
2006-04-13 20:47:06 +00:00
{
2006-11-13 23:12:47 +00:00
if ( ps [ g_p ] . newowner > = 0 )
2006-04-13 20:47:06 +00:00
goalang = getangle ( ps [ g_p ] . oposx - g_sp - > x , ps [ g_p ] . oposy - g_sp - > y ) ;
else goalang = getangle ( ps [ g_p ] . posx - g_sp - > x , ps [ g_p ] . posy - g_sp - > y ) ;
angdif = ksgn ( getincangle ( g_sp - > ang , goalang ) ) < < 5 ;
2006-11-13 23:12:47 +00:00
if ( angdif > - 32 & & angdif < 0 )
2006-04-13 20:47:06 +00:00
{
angdif = 0 ;
g_sp - > ang = goalang ;
}
g_sp - > ang + = angdif ;
}
2006-11-13 23:12:47 +00:00
if ( ( a & jumptoplayer ) = = jumptoplayer )
2006-04-13 20:47:06 +00:00
{
2006-11-13 23:12:47 +00:00
if ( g_t [ 0 ] < 16 )
2006-04-13 20:47:06 +00:00
g_sp - > zvel - = ( sintable [ ( 512 + ( g_t [ 0 ] < < 4 ) ) & 2047 ] > > 5 ) ;
}
2006-11-13 23:12:47 +00:00
if ( a & face_player_smart )
2006-04-13 20:47:06 +00:00
{
long newx , newy ;
newx = ps [ g_p ] . posx + ( ps [ g_p ] . posxv / 768 ) ;
newy = ps [ g_p ] . posy + ( ps [ g_p ] . posyv / 768 ) ;
goalang = getangle ( newx - g_sp - > x , newy - g_sp - > y ) ;
angdif = getincangle ( g_sp - > ang , goalang ) > > 2 ;
2006-11-13 23:12:47 +00:00
if ( angdif > - 8 & & angdif < 0 ) angdif = 0 ;
2006-04-13 20:47:06 +00:00
g_sp - > ang + = angdif ;
}
2006-11-14 21:35:50 +00:00
if ( g_t [ 1 ] = = 0 | | a = = 0 )
2006-04-13 20:47:06 +00:00
{
2006-11-14 21:35:50 +00:00
if ( ( badguy ( g_sp ) & & g_sp - > extra < = 0 ) | | ( hittype [ g_i ] . bposx ! = g_sp - > x ) | | ( hittype [ g_i ] . bposy ! = g_sp - > y ) )
2006-04-13 20:47:06 +00:00
{
hittype [ g_i ] . bposx = g_sp - > x ;
hittype [ g_i ] . bposy = g_sp - > y ;
setsprite ( g_i , g_sp - > x , g_sp - > y , g_sp - > z ) ;
}
return ;
}
moveptr = ( long * ) g_t [ 1 ] ;
2006-11-13 23:12:47 +00:00
if ( a & geth ) g_sp - > xvel + = ( * moveptr - g_sp - > xvel ) > > 1 ;
if ( a & getv ) g_sp - > zvel + = ( ( * ( moveptr + 1 ) < < 4 ) - g_sp - > zvel ) > > 1 ;
2006-04-13 20:47:06 +00:00
2006-11-13 23:12:47 +00:00
if ( a & dodgebullet )
2006-04-13 20:47:06 +00:00
dodge ( g_sp ) ;
2006-11-13 23:12:47 +00:00
if ( g_sp - > picnum ! = APLAYER )
2006-04-13 20:47:06 +00:00
alterang ( a ) ;
2006-11-14 21:35:50 +00:00
if ( g_sp - > xvel > - 6 & & g_sp - > xvel < 6 ) g_sp - > xvel = 0 ;
2006-04-13 20:47:06 +00:00
a = badguy ( g_sp ) ;
2006-11-13 23:12:47 +00:00
if ( g_sp - > xvel | | g_sp - > zvel )
2006-04-13 20:47:06 +00:00
{
2006-11-13 23:12:47 +00:00
if ( a & & g_sp - > picnum ! = ROTATEGUN )
2006-04-13 20:47:06 +00:00
{
2006-11-14 21:35:50 +00:00
if ( ( g_sp - > picnum = = DRONE | | g_sp - > picnum = = COMMANDER ) & & g_sp - > extra > 0 )
2006-04-13 20:47:06 +00:00
{
2006-11-13 23:12:47 +00:00
if ( g_sp - > picnum = = COMMANDER )
2006-04-13 20:47:06 +00:00
{
hittype [ g_i ] . floorz = l = getflorzofslope ( g_sp - > sectnum , g_sp - > x , g_sp - > y ) ;
2006-11-14 21:35:50 +00:00
if ( g_sp - > z > ( l - ( 8 < < 8 ) ) )
2006-04-13 20:47:06 +00:00
{
2006-11-14 21:35:50 +00:00
if ( g_sp - > z > ( l - ( 8 < < 8 ) ) ) g_sp - > z = l - ( 8 < < 8 ) ;
2006-04-13 20:47:06 +00:00
g_sp - > zvel = 0 ;
}
hittype [ g_i ] . ceilingz = l = getceilzofslope ( g_sp - > sectnum , g_sp - > x , g_sp - > y ) ;
2006-11-14 21:35:50 +00:00
if ( ( g_sp - > z - l ) < ( 80 < < 8 ) )
2006-04-13 20:47:06 +00:00
{
g_sp - > z = l + ( 80 < < 8 ) ;
g_sp - > zvel = 0 ;
}
}
else
{
2006-11-14 21:35:50 +00:00
if ( g_sp - > zvel > 0 )
2006-04-13 20:47:06 +00:00
{
hittype [ g_i ] . floorz = l = getflorzofslope ( g_sp - > sectnum , g_sp - > x , g_sp - > y ) ;
2006-11-14 21:35:50 +00:00
if ( g_sp - > z > ( l - ( 30 < < 8 ) ) )
2006-04-13 20:47:06 +00:00
g_sp - > z = l - ( 30 < < 8 ) ;
}
else
{
hittype [ g_i ] . ceilingz = l = getceilzofslope ( g_sp - > sectnum , g_sp - > x , g_sp - > y ) ;
2006-11-14 21:35:50 +00:00
if ( ( g_sp - > z - l ) < ( 50 < < 8 ) )
2006-04-13 20:47:06 +00:00
{
g_sp - > z = l + ( 50 < < 8 ) ;
g_sp - > zvel = 0 ;
}
}
}
}
2006-11-13 23:12:47 +00:00
else if ( g_sp - > picnum ! = ORGANTIC )
2006-04-13 20:47:06 +00:00
{
2006-11-13 23:12:47 +00:00
if ( g_sp - > zvel > 0 & & hittype [ g_i ] . floorz < g_sp - > z )
2006-04-13 20:47:06 +00:00
g_sp - > z = hittype [ g_i ] . floorz ;
2006-11-14 21:35:50 +00:00
if ( g_sp - > zvel < 0 )
2006-04-13 20:47:06 +00:00
{
l = getceilzofslope ( g_sp - > sectnum , g_sp - > x , g_sp - > y ) ;
2006-11-14 21:35:50 +00:00
if ( ( g_sp - > z - l ) < ( 66 < < 8 ) )
2006-04-13 20:47:06 +00:00
{
g_sp - > z = l + ( 66 < < 8 ) ;
g_sp - > zvel > > = 1 ;
}
}
}
}
2006-11-13 23:12:47 +00:00
else if ( g_sp - > picnum = = APLAYER )
2006-11-14 21:35:50 +00:00
if ( ( g_sp - > z - hittype [ g_i ] . ceilingz ) < ( 32 < < 8 ) )
2006-04-13 20:47:06 +00:00
g_sp - > z = hittype [ g_i ] . ceilingz + ( 32 < < 8 ) ;
daxvel = g_sp - > xvel ;
angdif = g_sp - > ang ;
2006-11-14 21:35:50 +00:00
if ( a & & g_sp - > picnum ! = ROTATEGUN )
2006-04-13 20:47:06 +00:00
{
2006-11-14 21:35:50 +00:00
if ( g_x < 960 & & g_sp - > xrepeat > 16 )
2006-04-13 20:47:06 +00:00
{
daxvel = - ( 1024 - g_x ) ;
angdif = getangle ( ps [ g_p ] . posx - g_sp - > x , ps [ g_p ] . posy - g_sp - > y ) ;
2006-11-13 23:12:47 +00:00
if ( g_x < 512 )
2006-04-13 20:47:06 +00:00
{
ps [ g_p ] . posxv = 0 ;
ps [ g_p ] . posyv = 0 ;
}
else
{
ps [ g_p ] . posxv = mulscale ( ps [ g_p ] . posxv , ps [ g_p ] . runspeed - 0x2000 , 16 ) ;
ps [ g_p ] . posyv = mulscale ( ps [ g_p ] . posyv , ps [ g_p ] . runspeed - 0x2000 , 16 ) ;
}
}
2006-11-13 23:12:47 +00:00
else if ( g_sp - > picnum ! = DRONE & & g_sp - > picnum ! = SHARK & & g_sp - > picnum ! = COMMANDER )
2006-04-13 20:47:06 +00:00
{
2006-11-14 21:35:50 +00:00
if ( hittype [ g_i ] . bposz ! = g_sp - > z | | ( ud . multimode < 2 & & ud . player_skill < 2 ) )
2006-04-13 20:47:06 +00:00
{
2006-11-14 21:35:50 +00:00
if ( ( g_t [ 0 ] & 1 ) | | ps [ g_p ] . actorsqu = = g_i ) return ;
2006-04-13 20:47:06 +00:00
else daxvel < < = 1 ;
}
else
{
2006-11-14 21:35:50 +00:00
if ( ( g_t [ 0 ] & 3 ) | | ps [ g_p ] . actorsqu = = g_i ) return ;
2006-04-13 20:47:06 +00:00
else daxvel < < = 2 ;
}
}
}
hittype [ g_i ] . movflag = movesprite ( g_i ,
( daxvel * ( sintable [ ( angdif + 512 ) & 2047 ] ) ) > > 14 ,
( daxvel * ( sintable [ angdif & 2047 ] ) ) > > 14 , g_sp - > zvel , CLIPMASK0 ) ;
}
2006-11-14 21:35:50 +00:00
if ( a )
2006-04-13 20:47:06 +00:00
{
if ( sector [ g_sp - > sectnum ] . ceilingstat & 1 )
g_sp - > shade + = ( sector [ g_sp - > sectnum ] . ceilingshade - g_sp - > shade ) > > 1 ;
else g_sp - > shade + = ( sector [ g_sp - > sectnum ] . floorshade - g_sp - > shade ) > > 1 ;
2006-11-14 21:35:50 +00:00
if ( sector [ g_sp - > sectnum ] . floorpicnum = = MIRROR )
2006-04-13 20:47:06 +00:00
deletesprite ( g_i ) ;
}
}
2006-12-10 03:15:56 +00:00
static void parseifelse ( long condition )
2006-04-13 20:47:06 +00:00
{
2006-11-14 21:35:50 +00:00
if ( condition )
2006-04-13 20:47:06 +00:00
{
// skip 'else' pointer.. and...
insptr + = 2 ;
parse ( ) ;
}
else
{
insptr = ( long * ) * ( insptr + 1 ) ;
2006-11-13 23:12:47 +00:00
if ( * insptr = = 10 )
2006-04-13 20:47:06 +00:00
{
// else...
// skip 'else' and...
insptr + = 2 ;
parse ( ) ;
}
}
}
// long *it = 0x00589a04;
2006-12-19 20:31:40 +00:00
long instruction = 0 ;
2006-12-18 08:37:12 +00:00
static int parse ( void )
2006-04-13 20:47:06 +00:00
{
long j , l , s , tw ;
2006-11-13 23:12:47 +00:00
if ( killit_flag ) return 1 ;
2006-04-13 20:47:06 +00:00
// if(*it == 1668249134L) gameexit("\nERR");
// Bsprintf(g_szBuf,"Parsing: %d",*insptr);
// AddLog(g_szBuf);
tw = * insptr ;
2006-12-19 20:31:40 +00:00
instruction = tw ;
2006-11-13 23:12:47 +00:00
switch ( tw )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
case CON_REDEFINEQUOTE :
2006-12-18 21:29:55 +00:00
insptr + + ;
2006-11-16 03:02:42 +00:00
{
2006-12-18 21:29:55 +00:00
int q = * insptr + + , i = * insptr + + ;
2006-11-16 03:02:42 +00:00
if ( fta_quotes [ q ] = = NULL | | redefined_quotes [ i ] = = NULL )
2006-12-18 21:29:55 +00:00
{
2006-11-16 03:02:42 +00:00
OSD_Printf ( " %s %d null quote %d %d \n " , __FILE__ , __LINE__ , q , i ) ;
2006-12-18 21:29:55 +00:00
break ;
}
Bstrcpy ( fta_quotes [ q ] , redefined_quotes [ i ] ) ;
2006-11-16 03:02:42 +00:00
break ;
}
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_GETTHISPROJECTILE :
case CON_SETTHISPROJECTILE :
2006-12-18 09:32:17 +00:00
insptr + + ;
2006-11-16 03:02:42 +00:00
{
// syntax [gs]etplayer[<var>].x <VAR>
// <varid> <xxxid> <varid>
2006-12-18 09:32:17 +00:00
int lVar1 = * insptr + + , lLabelID = * insptr + + , lVar2 = * insptr + + ;
DoThisProjectile ( tw = = CON_SETTHISPROJECTILE , lVar1 , lLabelID , lVar2 ) ;
2006-11-16 03:02:42 +00:00
break ;
}
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFRND :
insptr + + ;
parseifelse ( rnd ( * insptr ) ) ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFCANSHOOTTARGET :
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
if ( g_x > 1024 )
{
2006-12-18 08:37:12 +00:00
short temphit , sclip = 768 , angdif = 16 ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
if ( badguy ( g_sp ) & & g_sp - > xrepeat > 56 )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
sclip = 3084 ;
angdif = 48 ;
}
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
j = hitasprite ( g_i , & temphit ) ;
if ( j = = ( 1 < < 30 ) )
{
parseifelse ( 1 ) ;
break ;
}
if ( j > sclip )
{
if ( temphit > = 0 & & sprite [ temphit ] . picnum = = g_sp - > picnum )
j = 0 ;
2006-04-13 20:47:06 +00:00
else
{
2006-11-16 03:02:42 +00:00
g_sp - > ang + = angdif ;
j = hitasprite ( g_i , & temphit ) ;
g_sp - > ang - = angdif ;
if ( j > sclip )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
if ( temphit > = 0 & & sprite [ temphit ] . picnum = = g_sp - > picnum )
j = 0 ;
else
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
g_sp - > ang - = angdif ;
j = hitasprite ( g_i , & temphit ) ;
g_sp - > ang + = angdif ;
if ( j > 768 )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
if ( temphit > = 0 & & sprite [ temphit ] . picnum = = g_sp - > picnum )
j = 0 ;
else j = 1 ;
2006-04-13 20:47:06 +00:00
}
2006-11-16 03:02:42 +00:00
else j = 0 ;
2006-04-13 20:47:06 +00:00
}
}
2006-11-16 03:02:42 +00:00
else j = 0 ;
2006-04-13 20:47:06 +00:00
}
}
2006-11-16 03:02:42 +00:00
else j = 0 ;
}
else j = 1 ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
parseifelse ( j ) ;
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFCANSEETARGET :
j = cansee ( g_sp - > x , g_sp - > y , g_sp - > z - ( ( TRAND & 41 ) < < 8 ) , g_sp - > sectnum , ps [ g_p ] . posx , ps [ g_p ] . posy , ps [ g_p ] . posz /*-((TRAND&41)<<8)*/ , sprite [ ps [ g_p ] . i ] . sectnum ) ;
parseifelse ( j ) ;
if ( j ) hittype [ g_i ] . timetosleep = SLEEPTIME ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFACTORNOTSTAYPUT :
parseifelse ( hittype [ g_i ] . actorstayput = = - 1 ) ;
break ;
case CON_IFCANSEE :
{
spritetype * s ;
2006-11-13 23:12:47 +00:00
2006-11-16 03:02:42 +00:00
// select sprite for monster to target
// if holoduke is on, let them target holoduke first.
//
if ( ps [ g_p ] . holoduke_on > = 0 )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
s = & sprite [ ps [ g_p ] . holoduke_on ] ;
j = cansee ( g_sp - > x , g_sp - > y , g_sp - > z - ( TRAND & ( ( 32 < < 8 ) - 1 ) ) , g_sp - > sectnum ,
s - > x , s - > y , s - > z , s - > sectnum ) ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
if ( j = = 0 )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
// they can't see player's holoduke
// check for player...
s = & sprite [ ps [ g_p ] . i ] ;
2006-11-15 01:16:55 +00:00
}
2006-11-16 03:02:42 +00:00
}
else s = & sprite [ ps [ g_p ] . i ] ; // holoduke not on. look for player
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
// can they see player, (or player's holoduke)
j = cansee ( g_sp - > x , g_sp - > y , g_sp - > z - ( TRAND & ( ( 47 < < 8 ) ) ) , g_sp - > sectnum ,
s - > x , s - > y , s - > z - ( 24 < < 8 ) , s - > sectnum ) ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
if ( j = = 0 )
{
// they can't see it.
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
// Huh?. This does nothing....
// (the result is always j==0....)
if ( ( klabs ( hittype [ g_i ] . lastvx - g_sp - > x ) + klabs ( hittype [ g_i ] . lastvy - g_sp - > y ) ) <
( klabs ( hittype [ g_i ] . lastvx - s - > x ) + klabs ( hittype [ g_i ] . lastvy - s - > y ) ) )
j = 0 ;
2006-11-15 01:16:55 +00:00
2006-11-16 03:02:42 +00:00
// um yeah, this if() will always fire....
if ( j = = 0 )
{
// search around for target player
2006-11-15 01:16:55 +00:00
2006-11-16 03:02:42 +00:00
// also modifies 'target' x&y if found..
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
j = furthestcanseepoint ( g_i , s , & hittype [ g_i ] . lastvx , & hittype [ g_i ] . lastvy ) ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
if ( j = = - 1 ) j = 0 ;
else j = 1 ;
2006-04-13 20:47:06 +00:00
}
2006-11-16 03:02:42 +00:00
}
else
{
// else, they did see it.
// save where we were looking...
hittype [ g_i ] . lastvx = s - > x ;
hittype [ g_i ] . lastvy = s - > y ;
2006-11-15 01:16:55 +00:00
}
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
if ( j = = 1 & & ( g_sp - > statnum = = 1 | | g_sp - > statnum = = 6 ) )
hittype [ g_i ] . timetosleep = SLEEPTIME ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
parseifelse ( j = = 1 ) ;
break ;
}
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFHITWEAPON :
parseifelse ( ifhitbyweapon ( g_i ) > = 0 ) ;
2006-04-13 20:47:06 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFSQUISHED :
parseifelse ( ifsquished ( g_i , g_p ) = = 1 ) ;
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFDEAD :
{
j = g_sp - > extra ;
if ( g_sp - > picnum = = APLAYER )
j - - ;
parseifelse ( j < 0 ) ;
}
break ;
case CON_AI :
insptr + + ;
g_t [ 5 ] = * insptr + + ; // Ai
g_t [ 4 ] = * ( long * ) ( g_t [ 5 ] ) ; // Action
g_t [ 1 ] = * ( long * ) ( g_t [ 5 ] + 4 ) ; // move
g_sp - > hitag = * ( long * ) ( g_t [ 5 ] + 8 ) ; // move flags
g_t [ 0 ] = g_t [ 2 ] = g_t [ 3 ] = 0 ; // count, actioncount... g_t[3] = ???
if ( g_sp - > hitag & random_angle )
g_sp - > ang = TRAND & 2047 ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_ACTION :
insptr + + ;
g_t [ 2 ] = 0 ;
g_t [ 3 ] = 0 ;
g_t [ 4 ] = * insptr + + ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFPDISTL :
insptr + + ;
parseifelse ( g_x < * insptr ) ;
if ( g_x > MAXSLEEPDIST & & hittype [ g_i ] . timetosleep = = 0 )
hittype [ g_i ] . timetosleep = SLEEPTIME ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFPDISTG :
insptr + + ;
parseifelse ( g_x > * insptr ) ;
if ( g_x > MAXSLEEPDIST & & hittype [ g_i ] . timetosleep = = 0 )
hittype [ g_i ] . timetosleep = SLEEPTIME ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_ELSE :
insptr = ( long * ) * ( insptr + 1 ) ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_ADDSTRENGTH :
insptr + + ;
g_sp - > extra + = * insptr + + ;
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_STRENGTH :
insptr + + ;
g_sp - > extra = * insptr + + ;
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFGOTWEAPONCE :
insptr + + ;
if ( ( gametype_flags [ ud . coop ] & GAMETYPE_FLAG_WEAPSTAY ) & & ud . multimode > 1 )
{
if ( * insptr = = 0 )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
for ( j = 0 ; j < ps [ g_p ] . weapreccnt ; j + + )
if ( ps [ g_p ] . weaprecs [ j ] = = g_sp - > picnum )
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
parseifelse ( j < ps [ g_p ] . weapreccnt & & g_sp - > owner = = g_i ) ;
2006-11-15 01:16:55 +00:00
}
2006-11-16 03:02:42 +00:00
else if ( ps [ g_p ] . weapreccnt < 16 )
{
ps [ g_p ] . weaprecs [ ps [ g_p ] . weapreccnt + + ] = g_sp - > picnum ;
parseifelse ( g_sp - > owner = = g_i ) ;
}
2006-12-01 22:34:32 +00:00
else parseifelse ( 0 ) ;
2006-11-16 03:02:42 +00:00
}
else parseifelse ( 0 ) ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_GETLASTPAL :
insptr + + ;
if ( g_sp - > picnum = = APLAYER )
g_sp - > pal = ps [ g_sp - > yvel ] . palookup ;
else g_sp - > pal = hittype [ g_i ] . tempang ;
hittype [ g_i ] . tempang = 0 ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_TOSSWEAPON :
insptr + + ;
checkweapons ( & ps [ g_sp - > yvel ] ) ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_NULLOP :
insptr + + ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_MIKESND :
insptr + + ;
if ( ! isspritemakingsound ( g_i , g_sp - > yvel ) )
spritesound ( g_sp - > yvel , g_i ) ;
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_PKICK :
insptr + + ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
if ( ud . multimode > 1 & & g_sp - > picnum = = APLAYER )
{
if ( ps [ otherp ] . quick_kick = = 0 )
ps [ otherp ] . quick_kick = 14 ;
}
else if ( g_sp - > picnum ! = APLAYER & & ps [ g_p ] . quick_kick = = 0 )
ps [ g_p ] . quick_kick = 14 ;
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_SIZETO :
insptr + + ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
j = ( * insptr + + - g_sp - > xrepeat ) < < 1 ;
g_sp - > xrepeat + = ksgn ( j ) ;
2006-04-18 21:18:30 +00:00
2006-11-16 03:02:42 +00:00
if ( ( g_sp - > picnum = = APLAYER & & g_sp - > yrepeat < 36 ) | | * insptr < g_sp - > yrepeat | | ( ( g_sp - > yrepeat * ( tilesizy [ g_sp - > picnum ] + 8 ) ) < < 2 ) < ( hittype [ g_i ] . floorz - hittype [ g_i ] . ceilingz ) )
{
j = ( ( * insptr ) - g_sp - > yrepeat ) < < 1 ;
if ( klabs ( j ) ) g_sp - > yrepeat + = ksgn ( j ) ;
}
insptr + + ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_SIZEAT :
insptr + + ;
g_sp - > xrepeat = ( char ) * insptr + + ;
g_sp - > yrepeat = ( char ) * insptr + + ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_SHOOT :
insptr + + ;
shoot ( g_i , ( short ) * insptr + + ) ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_SOUNDONCE :
insptr + + ;
if ( ! isspritemakingsound ( g_i , * insptr ) )
spritesound ( ( short ) * insptr , g_i ) ;
insptr + + ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFSOUND :
insptr + + ;
parseifelse ( isspritemakingsound ( g_i , * insptr ) ) ;
// parseifelse(SoundOwner[*insptr][0].i == g_i);
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_STOPSOUND :
insptr + + ;
if ( isspritemakingsound ( g_i , * insptr ) )
stopspritesound ( ( short ) * insptr , g_i ) ;
insptr + + ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_GLOBALSOUND :
insptr + + ;
if ( g_p = = screenpeek | | ( gametype_flags [ ud . coop ] & GAMETYPE_FLAG_COOPSOUND ) )
spritesound ( ( short ) * insptr , ps [ screenpeek ] . i ) ;
insptr + + ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_SOUND :
insptr + + ;
spritesound ( ( short ) * insptr + + , g_i ) ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_TIP :
insptr + + ;
ps [ g_p ] . tipincs = 26 ;
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_FALL :
insptr + + ;
g_sp - > xoffset = 0 ;
g_sp - > yoffset = 0 ;
// if(!gotz)
{
2006-12-19 20:31:40 +00:00
j = gc ;
2006-11-16 03:02:42 +00:00
2006-12-19 20:31:40 +00:00
if ( ceilingspace ( g_sp - > sectnum ) | | sector [ g_sp - > sectnum ] . lotag = = 2 )
j = gc / 6 ;
else if ( floorspace ( g_sp - > sectnum ) )
j = 0 ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
if ( hittype [ g_i ] . cgg < = 0 | | ( sector [ g_sp - > sectnum ] . floorstat & 2 ) )
{
getglobalz ( g_i ) ;
hittype [ g_i ] . cgg = 6 ;
}
else hittype [ g_i ] . cgg - - ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
if ( g_sp - > z < ( hittype [ g_i ] . floorz - FOURSLEIGHT ) )
{
2006-12-19 20:31:40 +00:00
g_sp - > zvel + = j ;
2006-11-16 03:02:42 +00:00
g_sp - > z + = g_sp - > zvel ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
if ( g_sp - > zvel > 6144 ) g_sp - > zvel = 6144 ;
}
else
{
g_sp - > z = hittype [ g_i ] . floorz - FOURSLEIGHT ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
if ( badguy ( g_sp ) | | ( g_sp - > picnum = = APLAYER & & g_sp - > owner > = 0 ) )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
if ( g_sp - > zvel > 3084 & & g_sp - > extra < = 1 )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
if ( g_sp - > pal ! = 1 & & g_sp - > picnum ! = DRONE )
2006-04-13 20:47:06 +00:00
{
2006-12-19 20:31:40 +00:00
if ( ! ( g_sp - > picnum = = APLAYER & & g_sp - > extra > 0 ) )
{
guts ( g_sp , JIBS6 , 15 , g_p ) ;
spritesound ( SQUISHED , g_i ) ;
spawn ( g_i , BLOODPOOL ) ;
}
2006-11-16 03:02:42 +00:00
}
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
hittype [ g_i ] . picnum = SHOTSPARK1 ;
hittype [ g_i ] . extra = 1 ;
g_sp - > zvel = 0 ;
}
else if ( g_sp - > zvel > 2048 & & sector [ g_sp - > sectnum ] . lotag ! = 1 )
{
j = g_sp - > sectnum ;
pushmove ( & g_sp - > x , & g_sp - > y , & g_sp - > z , ( short * ) & j , 128L , ( 4L < < 8 ) , ( 4L < < 8 ) , CLIPMASK0 ) ;
if ( j ! = g_sp - > sectnum & & j > = 0 & & j < MAXSECTORS )
changespritesect ( g_i , j ) ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
spritesound ( THUD , g_i ) ;
2006-04-13 20:47:06 +00:00
}
}
2006-11-16 03:02:42 +00:00
if ( sector [ g_sp - > sectnum ] . lotag = = 1 )
switch ( dynamictostatic [ g_sp - > picnum ] )
{
case OCTABRAIN__STATIC :
case COMMANDER__STATIC :
case DRONE__STATIC :
break ;
default :
g_sp - > z + = ( 24 < < 8 ) ;
break ;
}
else g_sp - > zvel = 0 ;
2006-04-13 20:47:06 +00:00
}
2006-12-09 23:41:43 +00:00
if ( g_sp - > z > ( hittype [ g_i ] . floorz - FOURSLEIGHT ) )
g_sp - > z = ( hittype [ g_i ] . floorz - FOURSLEIGHT ) ;
2006-11-16 03:02:42 +00:00
}
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_ENDA :
case CON_BREAK :
case CON_ENDS :
return 1 ;
case CON_RIGHTBRACE :
insptr + + ;
return 1 ;
case CON_ADDAMMO :
insptr + + ;
if ( ps [ g_p ] . ammo_amount [ * insptr ] > = max_ammo_amount [ * insptr ] )
{
killit_flag = 2 ;
break ;
}
addammo ( * insptr , & ps [ g_p ] , * ( insptr + 1 ) ) ;
if ( ps [ g_p ] . curr_weapon = = KNEE_WEAPON )
if ( ps [ g_p ] . gotweapon [ * insptr ] )
2006-11-15 01:16:55 +00:00
{
2006-11-16 03:02:42 +00:00
if ( ! ( ps [ g_p ] . weaponswitch & 1 ) ) addweaponnoswitch ( & ps [ g_p ] , * insptr ) ;
else addweapon ( & ps [ g_p ] , * insptr ) ;
2006-11-15 01:16:55 +00:00
}
2006-11-16 03:02:42 +00:00
insptr + = 2 ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_MONEY :
insptr + + ;
lotsofmoney ( g_sp , * insptr + + ) ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_MAIL :
insptr + + ;
lotsofmail ( g_sp , * insptr + + ) ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_SLEEPTIME :
insptr + + ;
hittype [ g_i ] . timetosleep = ( short ) * insptr + + ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_PAPER :
insptr + + ;
lotsofpaper ( g_sp , * insptr + + ) ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_ADDKILLS :
insptr + + ;
ps [ g_p ] . actors_killed + = * insptr + + ;
hittype [ g_i ] . actorstayput = - 1 ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_LOTSOFGLASS :
insptr + + ;
spriteglass ( g_i , * insptr + + ) ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_KILLIT :
insptr + + ;
killit_flag = 1 ;
break ;
2006-11-15 01:16:55 +00:00
2006-11-16 03:02:42 +00:00
case CON_ADDWEAPON :
insptr + + ;
if ( ps [ g_p ] . gotweapon [ * insptr ] = = 0 )
{
if ( ! ( ps [ g_p ] . weaponswitch & 1 ) ) addweaponnoswitch ( & ps [ g_p ] , * insptr ) ;
else addweapon ( & ps [ g_p ] , * insptr ) ;
}
else if ( ps [ g_p ] . ammo_amount [ * insptr ] > = max_ammo_amount [ * insptr ] )
{
killit_flag = 2 ;
break ;
}
addammo ( * insptr , & ps [ g_p ] , * ( insptr + 1 ) ) ;
if ( ps [ g_p ] . curr_weapon = = KNEE_WEAPON )
if ( ps [ g_p ] . gotweapon [ * insptr ] )
2006-11-15 01:16:55 +00:00
{
2006-04-13 20:47:06 +00:00
if ( ! ( ps [ g_p ] . weaponswitch & 1 ) ) addweaponnoswitch ( & ps [ g_p ] , * insptr ) ;
2006-11-14 21:35:50 +00:00
else addweapon ( & ps [ g_p ] , * insptr ) ;
2006-04-13 20:47:06 +00:00
}
2006-11-16 03:02:42 +00:00
insptr + = 2 ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_DEBUG :
insptr + + ;
initprintf ( " %ld \n " , * insptr + + ) ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_ENDOFGAME :
insptr + + ;
ps [ g_p ] . timebeforeexit = * insptr + + ;
ps [ g_p ] . customexitsound = - 1 ;
ud . eog = 1 ;
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_ADDPHEALTH :
insptr + + ;
if ( ps [ g_p ] . newowner > = 0 )
{
ps [ g_p ] . newowner = - 1 ;
ps [ g_p ] . posx = ps [ g_p ] . oposx ;
ps [ g_p ] . posy = ps [ g_p ] . oposy ;
ps [ g_p ] . posz = ps [ g_p ] . oposz ;
ps [ g_p ] . ang = ps [ g_p ] . oang ;
2006-12-02 06:00:49 +00:00
updatesector ( ps [ g_p ] . posx , ps [ g_p ] . posy , & ps [ g_p ] . cursectnum ) ;
2006-11-16 03:02:42 +00:00
setpal ( & ps [ g_p ] ) ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
j = headspritestat [ 1 ] ;
while ( j > = 0 )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
if ( sprite [ j ] . picnum = = CAMERA1 )
sprite [ j ] . yvel = 0 ;
j = nextspritestat [ j ] ;
2006-04-13 20:47:06 +00:00
}
2006-11-16 03:02:42 +00:00
}
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
j = sprite [ ps [ g_p ] . i ] . extra ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
if ( g_sp - > picnum ! = ATOMICHEALTH )
{
if ( j > max_player_health & & * insptr > 0 )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
insptr + + ;
break ;
2006-04-13 20:47:06 +00:00
}
else
{
2006-11-13 23:12:47 +00:00
if ( j > 0 )
2006-04-13 20:47:06 +00:00
j + = * insptr ;
2006-11-16 03:02:42 +00:00
if ( j > max_player_health & & * insptr > 0 )
j = max_player_health ;
2006-04-13 20:47:06 +00:00
}
2006-11-16 03:02:42 +00:00
}
else
{
if ( j > 0 )
j + = * insptr ;
if ( j > ( max_player_health < < 1 ) )
j = ( max_player_health < < 1 ) ;
}
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
if ( j < 0 ) j = 0 ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
if ( ud . god = = 0 )
{
if ( * insptr > 0 )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
if ( ( j - * insptr ) < ( max_player_health > > 2 ) & &
j > = ( max_player_health > > 2 ) )
spritesound ( DUKE_GOTHEALTHATLOW , ps [ g_p ] . i ) ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
ps [ g_p ] . last_extra = j ;
2006-11-15 01:16:55 +00:00
}
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
sprite [ ps [ g_p ] . i ] . extra = j ;
}
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
insptr + + ;
break ;
case CON_STATE :
{
2006-12-18 21:29:55 +00:00
long * tempscrptr = insptr + 2 ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
insptr = ( long * ) * ( insptr + 1 ) ;
while ( 1 ) if ( parse ( ) ) break ;
insptr = tempscrptr ;
}
break ;
case CON_LEFTBRACE :
insptr + + ;
while ( 1 ) if ( parse ( ) ) break ;
2006-04-13 20:47:06 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_MOVE :
insptr + + ;
g_t [ 0 ] = 0 ;
g_t [ 1 ] = * insptr + + ;
g_sp - > hitag = * insptr + + ;
if ( g_sp - > hitag & random_angle )
g_sp - > ang = TRAND & 2047 ;
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_ADDWEAPONVAR :
insptr + + ;
if ( ps [ g_p ] . gotweapon [ GetGameVarID ( * ( insptr ) , g_i , g_p ) ] = = 0 )
{
if ( ! ( ps [ g_p ] . weaponswitch & 1 ) ) addweaponnoswitch ( & ps [ g_p ] , GetGameVarID ( * ( insptr ) , g_i , g_p ) ) ;
else addweapon ( & ps [ g_p ] , GetGameVarID ( * ( insptr ) , g_i , g_p ) ) ;
}
else if ( ps [ g_p ] . ammo_amount [ GetGameVarID ( * ( insptr ) , g_i , g_p ) ] > = max_ammo_amount [ GetGameVarID ( * ( insptr ) , g_i , g_p ) ] )
{
killit_flag = 2 ;
2006-04-13 20:47:06 +00:00
break ;
2006-11-16 03:02:42 +00:00
}
addammo ( GetGameVarID ( * ( insptr ) , g_i , g_p ) , & ps [ g_p ] , GetGameVarID ( * ( insptr + 1 ) , g_i , g_p ) ) ;
if ( ps [ g_p ] . curr_weapon = = KNEE_WEAPON )
if ( ps [ g_p ] . gotweapon [ GetGameVarID ( * ( insptr ) , g_i , g_p ) ] )
2006-11-15 01:16:55 +00:00
{
2006-04-13 20:47:06 +00:00
if ( ! ( ps [ g_p ] . weaponswitch & 1 ) ) addweaponnoswitch ( & ps [ g_p ] , GetGameVarID ( * ( insptr ) , g_i , g_p ) ) ;
2006-11-14 21:35:50 +00:00
else addweapon ( & ps [ g_p ] , GetGameVarID ( * ( insptr ) , g_i , g_p ) ) ;
2006-04-13 20:47:06 +00:00
}
2006-11-16 03:02:42 +00:00
insptr + = 2 ;
break ;
case CON_ACTIVATEBYSECTOR :
case CON_OPERATESECTORS :
case CON_OPERATEACTIVATORS :
case CON_SETASPECT :
case CON_SSP :
2006-12-18 21:29:55 +00:00
insptr + + ;
2006-11-16 03:02:42 +00:00
{
2006-12-18 21:29:55 +00:00
int var1 = GetGameVarID ( * insptr + + , g_i , g_p ) , var2 ;
2006-11-16 03:02:42 +00:00
if ( tw = = CON_OPERATEACTIVATORS & & * insptr = = g_iThisActorID )
{
var2 = g_p ;
insptr + + ;
}
else var2 = GetGameVarID ( * insptr + + , g_i , g_p ) ;
switch ( tw )
{
2006-11-13 23:12:47 +00:00
case CON_ACTIVATEBYSECTOR :
2006-11-16 03:02:42 +00:00
activatebysector ( var1 , var2 ) ;
break ;
2006-11-13 23:12:47 +00:00
case CON_OPERATESECTORS :
2006-11-16 03:02:42 +00:00
operatesectors ( var1 , var2 ) ;
break ;
2006-11-13 23:12:47 +00:00
case CON_OPERATEACTIVATORS :
2006-11-16 03:02:42 +00:00
operateactivators ( var1 , var2 ) ;
break ;
2006-11-13 23:12:47 +00:00
case CON_SETASPECT :
2006-11-16 03:02:42 +00:00
setaspect ( var1 , var2 ) ;
break ;
2006-11-13 23:12:47 +00:00
case CON_SSP :
2006-11-16 03:02:42 +00:00
ssp ( var1 , var2 ) ;
2006-11-15 01:16:55 +00:00
break ;
}
2006-11-16 03:02:42 +00:00
break ;
}
2006-04-24 05:42:29 +00:00
2006-11-16 03:02:42 +00:00
case CON_CANSEESPR :
2006-12-18 21:29:55 +00:00
insptr + + ;
2006-11-16 03:02:42 +00:00
{
2006-12-18 21:29:55 +00:00
int lVar1 = GetGameVarID ( * insptr + + , g_i , g_p ) , lVar2 = GetGameVarID ( * insptr + + , g_i , g_p ) ;
2006-04-13 20:47:06 +00:00
2006-12-18 21:29:55 +00:00
SetGameVarID ( * insptr + + , cansee ( sprite [ lVar1 ] . x , sprite [ lVar1 ] . y , sprite [ lVar1 ] . z , sprite [ lVar1 ] . sectnum ,
2006-11-16 03:02:42 +00:00
sprite [ lVar2 ] . x , sprite [ lVar2 ] . y , sprite [ lVar2 ] . z , sprite [ lVar2 ] . sectnum ) , g_i , g_p ) ;
break ;
}
case CON_OPERATERESPAWNS :
case CON_OPERATEMASTERSWITCHES :
case CON_CHECKACTIVATORMOTION :
2006-12-18 21:29:55 +00:00
insptr + + ;
2006-11-16 03:02:42 +00:00
{
2006-12-18 21:29:55 +00:00
int var1 = GetGameVarID ( * insptr + + , g_i , g_p ) ;
2006-11-15 01:16:55 +00:00
2006-11-16 03:02:42 +00:00
switch ( tw )
{
2006-11-15 01:16:55 +00:00
case CON_OPERATERESPAWNS :
2006-11-16 03:02:42 +00:00
operaterespawns ( var1 ) ;
break ;
2006-11-13 23:12:47 +00:00
case CON_OPERATEMASTERSWITCHES :
2006-11-16 03:02:42 +00:00
operatemasterswitches ( var1 ) ;
break ;
2006-11-13 23:12:47 +00:00
case CON_CHECKACTIVATORMOTION :
2006-11-16 03:02:42 +00:00
SetGameVarID ( g_iReturnVarID , check_activator_motion ( var1 ) , g_i , g_p ) ;
2006-11-15 01:16:55 +00:00
break ;
}
2006-11-16 03:02:42 +00:00
break ;
}
2006-09-30 06:51:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_INSERTSPRITEQ :
insptr + + ;
insertspriteq ( g_i ) ;
break ;
case CON_QSTRLEN :
2006-12-18 21:29:55 +00:00
insptr + + ;
2006-11-16 03:02:42 +00:00
{
2006-12-18 21:29:55 +00:00
int i = * insptr + + ;
2006-11-16 03:02:42 +00:00
j = GetGameVarID ( * insptr + + , g_i , g_p ) ;
2006-12-18 21:29:55 +00:00
if ( fta_quotes [ j ] = = NULL )
{
SetGameVarID ( i , - 1 , g_i , g_p ) ;
break ;
}
SetGameVarID ( i , Bstrlen ( fta_quotes [ j ] ) , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
}
case CON_GETPNAME :
case CON_QSTRCAT :
case CON_QSTRCPY :
case CON_CHANGESPRITESTAT :
case CON_CHANGESPRITESECT :
2006-12-18 21:29:55 +00:00
insptr + + ;
2006-11-16 03:02:42 +00:00
{
2006-12-18 21:29:55 +00:00
int i = GetGameVarID ( * insptr + + , g_i , g_p ) , j ;
2006-11-16 03:02:42 +00:00
if ( tw = = CON_GETPNAME & & * insptr = = g_iThisActorID )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
j = g_p ;
2006-04-13 20:47:06 +00:00
insptr + + ;
2006-11-15 01:16:55 +00:00
}
2006-11-16 03:02:42 +00:00
else j = GetGameVarID ( * insptr + + , g_i , g_p ) ;
2006-05-13 01:07:06 +00:00
2006-11-16 03:02:42 +00:00
switch ( tw )
{
2006-11-13 23:12:47 +00:00
case CON_GETPNAME :
2006-11-16 03:02:42 +00:00
if ( fta_quotes [ i ] ! = NULL )
{
if ( ud . user_name [ j ] [ 0 ] )
Bstrcpy ( fta_quotes [ i ] , ud . user_name [ j ] ) ;
else Bsprintf ( fta_quotes [ i ] , " %d " , j ) ;
}
else OSD_Printf ( " %s %d null quote %d \n " , __FILE__ , __LINE__ , i ) ;
break ;
2006-11-13 23:12:47 +00:00
case CON_QSTRCAT :
2006-11-16 03:02:42 +00:00
if ( fta_quotes [ i ] ! = NULL & & fta_quotes [ j ] ! = NULL )
Bstrncat ( fta_quotes [ i ] , fta_quotes [ j ] , ( MAXQUOTELEN - 1 ) - Bstrlen ( fta_quotes [ i ] ) ) ;
else OSD_Printf ( " %s %d null quote %d %d \n " , __FILE__ , __LINE__ , i , j ) ;
break ;
2006-11-13 23:12:47 +00:00
case CON_QSTRCPY :
2006-11-16 03:02:42 +00:00
if ( fta_quotes [ i ] ! = NULL & & fta_quotes [ j ] ! = NULL )
Bstrcpy ( fta_quotes [ i ] , fta_quotes [ j ] ) ;
else OSD_Printf ( " %s %d null quote %d %d \n " , __FILE__ , __LINE__ , i , j ) ;
break ;
2006-11-13 23:12:47 +00:00
case CON_CHANGESPRITESTAT :
2006-11-16 03:02:42 +00:00
changespritestat ( i , j ) ;
break ;
2006-11-13 23:12:47 +00:00
case CON_CHANGESPRITESECT :
2006-11-16 03:02:42 +00:00
changespritesect ( i , j ) ;
break ;
}
break ;
}
case CON_STARTLEVEL :
2006-12-18 21:29:55 +00:00
insptr + + ; // skip command
2006-11-16 03:02:42 +00:00
{
// from 'level' cheat in game.c (about line 6250)
2006-12-18 21:29:55 +00:00
int volnume = GetGameVarID ( * insptr + + , g_i , g_p ) , levnume = GetGameVarID ( * insptr + + , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
2006-12-05 00:16:33 +00:00
if ( volnume > MAXVOLUMES - 1 | | volnume < 0 )
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-12-06 23:14:49 +00:00
if ( levnume > MAXLEVELS - 1 | | levnume < 0 )
2006-11-13 23:12:47 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
ud . m_volume_number = ud . volume_number = volnume ;
ud . m_level_number = ud . level_number = levnume ;
if ( numplayers > 1 & & myconnectindex = = connecthead )
2006-12-12 08:46:32 +00:00
mpchangemap ( volnume , levnume ) ;
2006-11-16 03:02:42 +00:00
else
{
ps [ myconnectindex ] . gm | = MODE_EOL ;
display_bonus_screen = 0 ;
} // MODE_RESTART;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
break ;
}
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_MYOSX :
case CON_MYOSPALX :
case CON_MYOS :
case CON_MYOSPAL :
insptr + + ;
{
2006-12-18 08:37:12 +00:00
int x = GetGameVarID ( * insptr + + , g_i , g_p ) , y = GetGameVarID ( * insptr + + , g_i , g_p ) , tilenum = GetGameVarID ( * insptr + + , g_i , g_p ) ;
int shade = GetGameVarID ( * insptr + + , g_i , g_p ) , orientation = GetGameVarID ( * insptr + + , g_i , g_p ) ;
switch ( tw )
{
case CON_MYOS :
myos ( x , y , tilenum , shade , orientation ) ;
break ;
case CON_MYOSPAL :
{
int pal = GetGameVarID ( * insptr + + , g_i , g_p ) ;
myospal ( x , y , tilenum , shade , orientation , pal ) ;
break ;
}
case CON_MYOSX :
myosx ( x , y , tilenum , shade , orientation ) ;
break ;
case CON_MYOSPALX :
{
int pal = GetGameVarID ( * insptr + + , g_i , g_p ) ;
myospalx ( x , y , tilenum , shade , orientation , pal ) ;
break ;
}
}
2006-04-13 20:47:06 +00:00
break ;
}
2006-11-16 03:02:42 +00:00
case CON_SWITCH :
insptr + + ; // p-code
2006-04-13 20:47:06 +00:00
{
2006-12-18 08:37:12 +00:00
// command format:
// variable ID to check
// script offset to 'end'
// count of case statements
// script offset to default case (null if none)
// For each case: value, ptr to code
//AddLog("Processing Switch...");
long lVarID = * insptr + + , lValue = GetGameVarID ( lVarID , g_i , g_p ) , lEnd = * insptr + + , lCases = * insptr + + ;
long * lpDefault = insptr + + , * lpCases = insptr , bMatched = 0 , * lTempInsPtr , lCheckCase ;
insptr + = lCases * 2 ;
lTempInsPtr = insptr ;
//Bsprintf(g_szBuf,"lEnd= %ld *lpDefault=%ld",lEnd,*lpDefault);
2006-04-13 20:47:06 +00:00
//AddLog(g_szBuf);
2006-12-18 08:37:12 +00:00
//Bsprintf(g_szBuf,"Checking %ld cases for %ld",lCases, lValue);
//AddLog(g_szBuf);
for ( lCheckCase = 0 ; lCheckCase < lCases & & ! bMatched ; lCheckCase + + )
2006-04-13 20:47:06 +00:00
{
2006-12-18 08:37:12 +00:00
//Bsprintf(g_szBuf,"Checking #%ld Value= %ld",lCheckCase, lpCases[lCheckCase*2]);
2006-04-13 20:47:06 +00:00
//AddLog(g_szBuf);
2006-12-18 08:37:12 +00:00
if ( lpCases [ lCheckCase * 2 ] = = lValue )
2006-04-13 20:47:06 +00:00
{
2006-12-18 08:37:12 +00:00
//AddLog("Found Case Match");
//Bsprintf(g_szBuf,"insptr=%ld. lCheckCase=%ld, offset=%ld, &script[0]=%ld",
// (long)insptr,(long)lCheckCase,lpCases[lCheckCase*2+1],(long)&script[0]);
//AddLog(g_szBuf);
// fake a 2-d Array
insptr = ( long * ) ( lpCases [ lCheckCase * 2 + 1 ] + & script [ 0 ] ) ;
//Bsprintf(g_szBuf,"insptr=%ld. ", (long)insptr);
//AddLog(g_szBuf);
while ( 1 )
{
if ( parse ( ) )
break ;
}
//AddLog("Done Executing Case");
bMatched = 1 ;
2006-04-13 20:47:06 +00:00
}
2006-11-16 03:02:42 +00:00
}
2006-12-18 08:37:12 +00:00
if ( ! bMatched )
2006-11-16 03:02:42 +00:00
{
2006-12-18 08:37:12 +00:00
if ( * lpDefault )
{
//AddLog("No Matching Case: Using Default");
insptr = ( long * ) ( * lpDefault + & script [ 0 ] ) ;
while ( 1 ) if ( parse ( ) ) break ;
}
else
{
//AddLog("No Matching Case: No Default to use");
}
2006-04-13 20:47:06 +00:00
}
2006-12-18 08:37:12 +00:00
insptr = ( long * ) ( lEnd + ( long ) & script [ 0 ] ) ;
//Bsprintf(g_szBuf,"insptr=%ld. ", (long)insptr);
//AddLog(g_szBuf);
//AddLog("Done Processing Switch");
2006-11-13 23:12:47 +00:00
2006-12-18 08:37:12 +00:00
break ;
}
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_ENDSWITCH :
case CON_ENDEVENT :
insptr + + ;
return 1 ;
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_DISPLAYRAND :
insptr + + ;
2006-12-18 08:37:12 +00:00
SetGameVarID ( * insptr + + , rand ( ) , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_DRAGPOINT :
insptr + + ;
2006-12-18 08:37:12 +00:00
{
int wallnum = GetGameVarID ( * insptr + + , g_i , g_p ) , newx = GetGameVarID ( * insptr + + , g_i , g_p ) , newy = GetGameVarID ( * insptr + + , g_i , g_p ) ;
2006-04-13 20:47:06 +00:00
2006-12-18 08:37:12 +00:00
dragpoint ( wallnum , newx , newy ) ;
break ;
}
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_DIST :
case CON_LDIST :
insptr + + ;
{
2006-12-18 08:37:12 +00:00
int distvar = * insptr + + , xvar = * insptr + + , yvar = * insptr + + , distx = 0 ;
switch ( tw )
{
case CON_DIST :
distx = dist ( & sprite [ GetGameVarID ( xvar , g_i , g_p ) ] , & sprite [ GetGameVarID ( yvar , g_i , g_p ) ] ) ;
break ;
case CON_LDIST :
distx = ldist ( & sprite [ GetGameVarID ( xvar , g_i , g_p ) ] , & sprite [ GetGameVarID ( yvar , g_i , g_p ) ] ) ;
break ;
}
SetGameVarID ( distvar , distx , g_i , g_p ) ;
2006-04-13 20:47:06 +00:00
break ;
}
2006-11-16 03:02:42 +00:00
case CON_GETINCANGLE :
case CON_GETANGLE :
insptr + + ;
2006-12-18 08:37:12 +00:00
{
int angvar = * insptr + + , xvar = * insptr + + , yvar = * insptr + + ;
2006-11-16 03:02:42 +00:00
2006-12-18 08:37:12 +00:00
if ( tw = = CON_GETANGLE )
{
SetGameVarID ( angvar , getangle ( GetGameVarID ( xvar , g_i , g_p ) , GetGameVarID ( yvar , g_i , g_p ) ) , g_i , g_p ) ;
break ;
}
SetGameVarID ( angvar , getincangle ( GetGameVarID ( xvar , g_i , g_p ) , GetGameVarID ( yvar , g_i , g_p ) ) , g_i , g_p ) ;
break ;
}
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_MULSCALE :
insptr + + ;
2006-12-18 08:37:12 +00:00
{
int var1 = * insptr + + , var2 = GetGameVarID ( * insptr + + , g_i , g_p ) ;
int var3 = GetGameVarID ( * insptr + + , g_i , g_p ) , var4 = GetGameVarID ( * insptr + + , g_i , g_p ) ;
2006-04-13 20:47:06 +00:00
2006-12-18 08:37:12 +00:00
SetGameVarID ( var1 , mulscale ( var2 , var3 , var4 ) , g_i , g_p ) ;
break ;
}
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_INITTIMER :
2006-12-19 20:31:40 +00:00
insptr + + ;
j = GetGameVarID ( * insptr + + , g_i , g_p ) ;
if ( timer ! = j )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
uninittimer ( ) ;
2006-12-19 20:31:40 +00:00
inittimer ( j ) ;
timer = j ;
2006-04-13 20:47:06 +00:00
}
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_TIME :
insptr + = 2 ;
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_ESPAWNVAR :
case CON_EQSPAWNVAR :
case CON_QSPAWNVAR :
2006-12-18 21:29:55 +00:00
insptr + + ;
2006-11-16 03:02:42 +00:00
{
2006-12-19 20:31:40 +00:00
int lIn = GetGameVarID ( * insptr + + , g_i , g_p ) ;
j = - 1 ;
2006-11-16 03:02:42 +00:00
if ( g_sp - > sectnum > = 0 & & g_sp - > sectnum < MAXSECTORS )
2006-12-19 20:31:40 +00:00
j = spawn ( g_i , lIn ) ;
2006-11-16 03:02:42 +00:00
switch ( tw )
{
case CON_EQSPAWNVAR :
2006-12-19 20:31:40 +00:00
if ( j ! = - 1 )
insertspriteq ( j ) ;
2006-11-16 03:02:42 +00:00
case CON_ESPAWNVAR :
2006-12-19 20:31:40 +00:00
SetGameVarID ( g_iReturnVarID , j , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
case CON_QSPAWNVAR :
2006-12-19 20:31:40 +00:00
if ( j ! = - 1 )
insertspriteq ( j ) ;
2006-04-13 20:47:06 +00:00
break ;
}
2006-11-16 03:02:42 +00:00
break ;
}
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_ESPAWN :
case CON_EQSPAWN :
case CON_QSPAWN :
insptr + + ;
2006-12-19 20:31:40 +00:00
j = - 1 ;
2006-11-16 03:02:42 +00:00
if ( g_sp - > sectnum > = 0 & & g_sp - > sectnum < MAXSECTORS )
2006-12-19 20:31:40 +00:00
j = spawn ( g_i , * insptr + + ) ;
2006-11-22 01:25:35 +00:00
else insptr + + ;
2006-11-16 03:02:42 +00:00
switch ( tw )
{
2006-11-15 01:16:55 +00:00
case CON_EQSPAWN :
2006-12-19 20:31:40 +00:00
if ( j ! = - 1 )
insertspriteq ( j ) ;
2006-11-16 03:02:42 +00:00
case CON_ESPAWN :
2006-12-19 20:31:40 +00:00
SetGameVarID ( g_iReturnVarID , j , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-11-13 23:12:47 +00:00
case CON_QSPAWN :
2006-12-19 20:31:40 +00:00
if ( j ! = - 1 )
insertspriteq ( j ) ;
2006-04-13 20:47:06 +00:00
break ;
}
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_ESHOOT :
case CON_EZSHOOT :
case CON_ZSHOOT :
insptr + + ;
2006-12-18 21:29:55 +00:00
2006-11-16 03:02:42 +00:00
if ( tw = = CON_ZSHOOT | | tw = = CON_EZSHOOT )
2006-11-13 23:12:47 +00:00
{
2006-11-16 03:02:42 +00:00
hittype [ g_i ] . temp_data [ 9 ] = GetGameVarID ( * insptr + + , g_i , g_p ) ;
if ( hittype [ g_i ] . temp_data [ 9 ] = = 0 )
hittype [ g_i ] . temp_data [ 9 ] = 1 ;
2006-04-13 20:47:06 +00:00
}
2006-11-16 03:02:42 +00:00
if ( g_sp - > sectnum > = 0 & & g_sp - > sectnum < MAXSECTORS )
2006-11-15 01:16:55 +00:00
{
2006-11-16 03:02:42 +00:00
if ( tw = = CON_EZSHOOT | | tw = = CON_ESHOOT )
2006-12-18 21:29:55 +00:00
SetGameVarID ( g_iReturnVarID , shoot ( g_i , * insptr + + ) , g_i , g_p ) ;
else shoot ( g_i , * insptr + + ) ;
2006-11-16 03:02:42 +00:00
}
2006-11-22 01:25:35 +00:00
else insptr + + ;
2006-11-16 03:02:42 +00:00
hittype [ g_i ] . temp_data [ 9 ] = 0 ;
break ;
2006-11-15 01:16:55 +00:00
2006-11-16 03:02:42 +00:00
case CON_SHOOTVAR :
case CON_ESHOOTVAR :
case CON_EZSHOOTVAR :
case CON_ZSHOOTVAR :
{
long lIn , lReturn = - 1 ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
insptr + + ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
if ( tw = = CON_ZSHOOTVAR | | tw = = CON_EZSHOOTVAR )
2006-11-13 23:12:47 +00:00
{
2006-11-16 03:02:42 +00:00
hittype [ g_i ] . temp_data [ 9 ] = GetGameVarID ( * insptr + + , g_i , g_p ) ;
if ( hittype [ g_i ] . temp_data [ 9 ] = = 0 )
hittype [ g_i ] . temp_data [ 9 ] = 1 ;
2006-11-13 23:12:47 +00:00
}
2006-11-16 03:02:42 +00:00
lIn = GetGameVarID ( * insptr + + , g_i , g_p ) ;
if ( g_sp - > sectnum > = 0 & & g_sp - > sectnum < MAXSECTORS )
2006-11-13 23:12:47 +00:00
{
2006-11-16 03:02:42 +00:00
lReturn = shoot ( g_i , lIn ) ;
if ( tw = = CON_ESHOOTVAR | | tw = = CON_EZSHOOTVAR )
SetGameVarID ( g_iReturnVarID , lReturn , g_i , g_p ) ;
2006-04-13 20:47:06 +00:00
}
2006-11-16 03:02:42 +00:00
hittype [ g_i ] . temp_data [ 9 ] = 0 ;
break ;
}
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_SOUNDVAR :
case CON_STOPSOUNDVAR :
case CON_SOUNDONCEVAR :
case CON_GLOBALSOUNDVAR :
2006-12-19 20:31:40 +00:00
insptr + + ;
j = GetGameVarID ( * insptr + + , g_i , g_p ) ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
switch ( tw )
2006-11-13 23:12:47 +00:00
{
2006-11-16 03:02:42 +00:00
case CON_SOUNDONCEVAR :
2006-12-19 20:31:40 +00:00
if ( ! isspritemakingsound ( g_i , j ) )
spritesound ( ( short ) j , g_i ) ;
2006-04-13 20:47:06 +00:00
break ;
2006-11-16 03:02:42 +00:00
case CON_GLOBALSOUNDVAR :
2006-12-19 20:31:40 +00:00
spritesound ( ( short ) j , ps [ screenpeek ] . i ) ;
2006-11-15 01:16:55 +00:00
break ;
2006-11-16 03:02:42 +00:00
case CON_STOPSOUNDVAR :
2006-12-19 20:31:40 +00:00
if ( isspritemakingsound ( g_i , j ) )
stopspritesound ( ( short ) j , g_i ) ;
2006-11-16 03:02:42 +00:00
break ;
case CON_SOUNDVAR :
2006-12-19 20:31:40 +00:00
spritesound ( ( short ) j , g_i ) ;
2006-04-13 20:47:06 +00:00
break ;
}
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_GUNIQHUDID :
insptr + + ;
2006-12-18 08:37:12 +00:00
{
2006-12-18 21:29:55 +00:00
j = GetGameVarID ( * insptr + + , g_i , g_p ) ;
if ( j < MAXUNIQHUDID - 1 )
guniqhudid = j ;
2006-12-18 08:37:12 +00:00
break ;
}
2006-11-15 01:16:55 +00:00
2006-11-16 03:02:42 +00:00
case CON_SAVEGAMEVAR :
case CON_READGAMEVAR :
{
int32 i = 0 ;
insptr + + ;
if ( scripthandle < 0 ) break ;
switch ( tw )
{
case CON_SAVEGAMEVAR :
i = GetGameVarID ( * insptr , g_i , g_p ) ;
SCRIPT_PutNumber ( scripthandle , " Gamevars " , aGameVars [ * insptr + + ] . szLabel , i , false , false ) ;
break ;
case CON_READGAMEVAR :
SCRIPT_GetNumber ( scripthandle , " Gamevars " , aGameVars [ * insptr ] . szLabel , & i ) ;
SetGameVarID ( * insptr + + , i , g_i , g_p ) ;
2006-11-15 01:16:55 +00:00
break ;
}
2006-11-16 03:02:42 +00:00
break ;
}
2006-11-15 01:16:55 +00:00
2006-11-16 03:02:42 +00:00
case CON_ROTATESPRITE :
insptr + + ;
2006-12-18 08:37:12 +00:00
{
int x = GetGameVarID ( * insptr + + , g_i , g_p ) , y = GetGameVarID ( * insptr + + , g_i , g_p ) , z = GetGameVarID ( * insptr + + , g_i , g_p ) ;
int a = GetGameVarID ( * insptr + + , g_i , g_p ) , tilenum = GetGameVarID ( * insptr + + , g_i , g_p ) , shade = GetGameVarID ( * insptr + + , g_i , g_p ) ;
int pal = GetGameVarID ( * insptr + + , g_i , g_p ) , orientation = GetGameVarID ( * insptr + + , g_i , g_p ) ;
int x1 = GetGameVarID ( * insptr + + , g_i , g_p ) , y1 = GetGameVarID ( * insptr + + , g_i , g_p ) ;
int x2 = GetGameVarID ( * insptr + + , g_i , g_p ) , y2 = GetGameVarID ( * insptr + + , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
2006-12-18 08:37:12 +00:00
rotatesprite ( x < < 16 , y < < 16 , z , a , tilenum , shade , pal , 2 | orientation , x1 , y1 , x2 , y2 ) ;
break ;
}
2006-11-15 01:16:55 +00:00
2006-11-16 03:02:42 +00:00
case CON_MINITEXT :
case CON_GAMETEXT :
case CON_DIGITALNUMBER :
2006-12-18 08:37:12 +00:00
insptr + + ;
2006-11-16 03:02:42 +00:00
{
2006-12-18 08:37:12 +00:00
int tilenum = ( tw = = CON_GAMETEXT | | tw = = CON_DIGITALNUMBER ) ? GetGameVarID ( * insptr + + , g_i , g_p ) : 0 ;
int x = GetGameVarID ( * insptr + + , g_i , g_p ) , y = GetGameVarID ( * insptr + + , g_i , g_p ) , q = GetGameVarID ( * insptr + + , g_i , g_p ) ;
int shade = GetGameVarID ( * insptr + + , g_i , g_p ) , pal = GetGameVarID ( * insptr + + , g_i , g_p ) ;
if ( tw = = CON_GAMETEXT | | tw = = CON_DIGITALNUMBER )
{
int orientation = GetGameVarID ( * insptr + + , g_i , g_p ) ;
int x1 = GetGameVarID ( * insptr + + , g_i , g_p ) , y1 = GetGameVarID ( * insptr + + , g_i , g_p ) ;
int x2 = GetGameVarID ( * insptr + + , g_i , g_p ) , y2 = GetGameVarID ( * insptr + + , g_i , g_p ) ;
if ( tw = = CON_GAMETEXT )
{
if ( fta_quotes [ q ] = = NULL )
{
OSD_Printf ( " %s %d null quote %d \n " , __FILE__ , __LINE__ , q ) ;
break ;
}
gametext_ ( 0 , tilenum , x > > 1 , y , fta_quotes [ q ] , shade , pal , orientation , x1 , y1 , x2 , y2 ) ;
break ;
}
txdigitalnumber ( tilenum , x , y , q , shade , pal , orientation , x1 , y1 , x2 , y2 ) ;
break ;
}
if ( fta_quotes [ q ] = = NULL )
{
OSD_Printf ( " %s %d null quote %d \n " , __FILE__ , __LINE__ , q ) ;
break ;
}
minitextshade ( x , y , fta_quotes [ q ] , shade , pal , 26 ) ;
break ;
2006-04-13 20:47:06 +00:00
}
2006-11-16 03:02:42 +00:00
case CON_ANGOFF :
insptr + + ;
spriteext [ g_i ] . angoff = * insptr + + ;
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_GETZRANGE :
insptr + + ;
2006-12-18 08:37:12 +00:00
{
int x = GetGameVarID ( * insptr + + , g_i , g_p ) , y = GetGameVarID ( * insptr + + , g_i , g_p ) , z = GetGameVarID ( * insptr + + , g_i , g_p ) ;
int sectnum = GetGameVarID ( * insptr + + , g_i , g_p ) ;
int ceilzvar = * insptr + + , ceilhitvar = * insptr + + , florzvar = * insptr + + , florhitvar = * insptr + + ;
int walldist = GetGameVarID ( * insptr + + , g_i , g_p ) , clipmask = GetGameVarID ( * insptr + + , g_i , g_p ) ;
long ceilz , ceilhit , florz , florhit ;
getzrange ( x , y , z , sectnum , & ceilz , & ceilhit , & florz , & florhit , walldist , clipmask ) ;
SetGameVarID ( ceilzvar , ceilz , g_i , g_p ) ;
SetGameVarID ( ceilhitvar , ceilhit , g_i , g_p ) ;
SetGameVarID ( florzvar , florz , g_i , g_p ) ;
SetGameVarID ( florhitvar , florhit , g_i , g_p ) ;
break ;
}
2006-04-23 06:00:08 +00:00
2006-11-16 03:02:42 +00:00
case CON_HITSCAN :
2006-12-18 08:37:12 +00:00
insptr + + ;
{
int xs = GetGameVarID ( * insptr + + , g_i , g_p ) , ys = GetGameVarID ( * insptr + + , g_i , g_p ) , zs = GetGameVarID ( * insptr + + , g_i , g_p ) ;
int sectnum = GetGameVarID ( * insptr + + , g_i , g_p ) ;
int vx = GetGameVarID ( * insptr + + , g_i , g_p ) , vy = GetGameVarID ( * insptr + + , g_i , g_p ) , vz = GetGameVarID ( * insptr + + , g_i , g_p ) ;
int hitsectvar = * insptr + + , hitwallvar = * insptr + + , hitspritevar = * insptr + + ;
int hitxvar = * insptr + + , hityvar = * insptr + + , hitzvar = * insptr + + , cliptype = GetGameVarID ( * insptr + + , g_i , g_p ) ;
short hitsect , hitwall , hitsprite ;
long hitx , hity , hitz ;
hitscan ( xs , ys , zs , sectnum , vx , vy , vz , & hitsect , & hitwall , & hitsprite , & hitx , & hity , & hitz , cliptype ) ;
SetGameVarID ( hitsectvar , hitsect , g_i , g_p ) ;
SetGameVarID ( hitwallvar , hitwall , g_i , g_p ) ;
SetGameVarID ( hitspritevar , hitsprite , g_i , g_p ) ;
SetGameVarID ( hitxvar , hitx , g_i , g_p ) ;
SetGameVarID ( hityvar , hity , g_i , g_p ) ;
SetGameVarID ( hitzvar , hitz , g_i , g_p ) ;
break ;
}
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_CANSEE :
insptr + + ;
2006-12-18 08:37:12 +00:00
{
int x1 = GetGameVarID ( * insptr + + , g_i , g_p ) , y1 = GetGameVarID ( * insptr + + , g_i , g_p ) , z1 = GetGameVarID ( * insptr + + , g_i , g_p ) ;
int sect1 = GetGameVarID ( * insptr + + , g_i , g_p ) ;
int x2 = GetGameVarID ( * insptr + + , g_i , g_p ) , y2 = GetGameVarID ( * insptr + + , g_i , g_p ) , z2 = GetGameVarID ( * insptr + + , g_i , g_p ) ;
int sect2 = GetGameVarID ( * insptr + + , g_i , g_p ) , rvar = * insptr + + ;
2006-11-16 03:02:42 +00:00
2006-12-18 08:37:12 +00:00
SetGameVarID ( rvar , cansee ( x1 , y1 , z1 , sect1 , x2 , y2 , z2 , sect2 ) , g_i , g_p ) ;
break ;
}
2006-11-16 03:02:42 +00:00
2006-12-18 08:37:12 +00:00
case CON_ROTATEPOINT :
2006-11-16 03:02:42 +00:00
insptr + + ;
2006-12-18 08:37:12 +00:00
{
int xpivot = GetGameVarID ( * insptr + + , g_i , g_p ) , ypivot = GetGameVarID ( * insptr + + , g_i , g_p ) ;
int x = GetGameVarID ( * insptr + + , g_i , g_p ) , y = GetGameVarID ( * insptr + + , g_i , g_p ) , daang = GetGameVarID ( * insptr + + , g_i , g_p ) ;
int x2var = * insptr + + , y2var = * insptr + + ;
long x2 , y2 ;
rotatepoint ( xpivot , ypivot , x , y , daang , & x2 , & y2 ) ;
SetGameVarID ( x2var , x2 , g_i , g_p ) ;
SetGameVarID ( y2var , y2 , g_i , g_p ) ;
break ;
}
2006-11-16 03:02:42 +00:00
case CON_NEARTAG :
2006-12-18 08:37:12 +00:00
insptr + + ;
{
// neartag(long x, long y, long z, short sectnum, short ang, //Starting position & angle
// short *neartagsector, //Returns near sector if sector[].tag != 0
// short *neartagwall, //Returns near wall if wall[].tag != 0
// short *neartagsprite, //Returns near sprite if sprite[].tag != 0
// long *neartaghitdist, //Returns actual distance to object (scale: 1024=largest grid size)
// long neartagrange, //Choose maximum distance to scan (scale: 1024=largest grid size)
// char tagsearch) //1-lotag only, 2-hitag only, 3-lotag&hitag
int x = GetGameVarID ( * insptr + + , g_i , g_p ) , y = GetGameVarID ( * insptr + + , g_i , g_p ) , z = GetGameVarID ( * insptr + + , g_i , g_p ) ;
int sectnum = GetGameVarID ( * insptr + + , g_i , g_p ) , ang = GetGameVarID ( * insptr + + , g_i , g_p ) ;
int neartagsectorvar = * insptr + + , neartagwallvar = * insptr + + , neartagspritevar = * insptr + + , neartaghitdistvar = * insptr + + ;
int neartagrange = GetGameVarID ( * insptr + + , g_i , g_p ) , tagsearch = GetGameVarID ( * insptr + + , g_i , g_p ) ;
neartag ( x , y , z , sectnum , ang , & neartagsector , & neartagwall , & neartagsprite , & neartaghitdist , neartagrange , tagsearch ) ;
SetGameVarID ( neartagsectorvar , neartagsector , g_i , g_p ) ;
SetGameVarID ( neartagwallvar , neartagwall , g_i , g_p ) ;
SetGameVarID ( neartagspritevar , neartagsprite , g_i , g_p ) ;
SetGameVarID ( neartaghitdistvar , neartaghitdist , g_i , g_p ) ;
break ;
}
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_MOVESPRITE :
case CON_SETSPRITE :
insptr + + ;
{
2006-12-18 08:37:12 +00:00
int spritenum = GetGameVarID ( * insptr + + , g_i , g_p ) ;
int x = GetGameVarID ( * insptr + + , g_i , g_p ) , y = GetGameVarID ( * insptr + + , g_i , g_p ) , z = GetGameVarID ( * insptr + + , g_i , g_p ) ;
if ( tw = = CON_SETSPRITE )
{
setsprite ( spritenum , x , y , z ) ;
break ;
}
{
int cliptype = GetGameVarID ( * insptr + + , g_i , g_p ) ;
SetGameVarID ( * insptr + + , movesprite ( spritenum , x , y , z , cliptype ) , g_i , g_p ) ;
break ;
}
2006-04-13 20:47:06 +00:00
}
2006-11-16 03:02:42 +00:00
case CON_GETFLORZOFSLOPE :
case CON_GETCEILZOFSLOPE :
insptr + + ;
{
2006-12-18 08:37:12 +00:00
int sectnum = GetGameVarID ( * insptr + + , g_i , g_p ) , x = GetGameVarID ( * insptr + + , g_i , g_p ) , y = GetGameVarID ( * insptr + + , g_i , g_p ) ;
if ( tw = = CON_GETFLORZOFSLOPE )
{
SetGameVarID ( * insptr + + , getflorzofslope ( sectnum , x , y ) , g_i , g_p ) ;
break ;
}
SetGameVarID ( * insptr + + , getceilzofslope ( sectnum , x , y ) , g_i , g_p ) ;
2006-04-13 20:47:06 +00:00
break ;
}
2006-11-16 03:02:42 +00:00
case CON_UPDATESECTOR :
case CON_UPDATESECTORZ :
insptr + + ;
2006-12-18 08:37:12 +00:00
{
int x = GetGameVarID ( * insptr + + , g_i , g_p ) , y = GetGameVarID ( * insptr + + , g_i , g_p ) ;
int z = ( tw = = CON_UPDATESECTORZ ) ? GetGameVarID ( * insptr + + , g_i , g_p ) : 0 ;
int var = * insptr + + ;
short w = sprite [ g_i ] . sectnum ;
2006-04-13 20:47:06 +00:00
2006-12-18 08:37:12 +00:00
if ( tw = = CON_UPDATESECTOR ) updatesector ( x , y , & w ) ;
else if ( tw = = CON_UPDATESECTORZ ) updatesectorz ( x , y , z , & w ) ;
2006-04-13 20:47:06 +00:00
2006-12-18 08:37:12 +00:00
SetGameVarID ( var , w , g_i , g_p ) ;
break ;
}
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_SPAWN :
insptr + + ;
if ( g_sp - > sectnum > = 0 & & g_sp - > sectnum < MAXSECTORS )
spawn ( g_i , * insptr ) ;
insptr + + ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFWASWEAPON :
insptr + + ;
parseifelse ( hittype [ g_i ] . picnum = = * insptr ) ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFAI :
insptr + + ;
parseifelse ( g_t [ 5 ] = = * insptr ) ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFACTION :
insptr + + ;
parseifelse ( g_t [ 4 ] = = * insptr ) ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFACTIONCOUNT :
insptr + + ;
parseifelse ( g_t [ 2 ] > = * insptr ) ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_RESETACTIONCOUNT :
insptr + + ;
g_t [ 2 ] = 0 ;
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_DEBRIS :
{
short dnum ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
insptr + + ;
dnum = * insptr + + ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
if ( g_sp - > sectnum > = 0 & & g_sp - > sectnum < MAXSECTORS )
for ( j = ( * insptr ) - 1 ; j > = 0 ; j - - )
{
if ( g_sp - > picnum = = BLIMP & & dnum = = SCRAP1 )
s = 0 ;
else s = ( TRAND % 3 ) ;
l = EGS ( g_sp - > sectnum ,
g_sp - > x + ( TRAND & 255 ) - 128 , g_sp - > y + ( TRAND & 255 ) - 128 , g_sp - > z - ( 8 < < 8 ) - ( TRAND & 8191 ) ,
dnum + s , g_sp - > shade , 32 + ( TRAND & 15 ) , 32 + ( TRAND & 15 ) ,
TRAND & 2047 , ( TRAND & 127 ) + 32 ,
- ( TRAND & 2047 ) , g_i , 5 ) ;
if ( g_sp - > picnum = = BLIMP & & dnum = = SCRAP1 )
sprite [ l ] . yvel = weaponsandammosprites [ j % 14 ] ;
else sprite [ l ] . yvel = - 1 ;
sprite [ l ] . pal = g_sp - > pal ;
}
insptr + + ;
}
break ;
case CON_COUNT :
insptr + + ;
g_t [ 0 ] = ( short ) * insptr + + ;
2006-04-13 20:47:06 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_CSTATOR :
insptr + + ;
g_sp - > cstat | = ( short ) * insptr + + ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_CLIPDIST :
insptr + + ;
g_sp - > clipdist = ( short ) * insptr + + ;
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_CSTAT :
insptr + + ;
g_sp - > cstat = ( short ) * insptr + + ;
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_SAVE :
2006-12-19 20:31:40 +00:00
insptr + + ;
2006-11-16 03:02:42 +00:00
{
time_t curtime ;
2006-12-19 20:31:40 +00:00
lastsavedpos = * insptr + + ;
if ( ( movesperpacket = = 4 & & connecthead ! = myconnectindex ) | | lastsavedpos > 9 )
2006-11-15 01:16:55 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
curtime = time ( NULL ) ;
Bstrcpy ( tempbuf , asctime ( localtime ( & curtime ) ) ) ;
clearbuf ( ud . savegame [ lastsavedpos ] , sizeof ( ud . savegame [ lastsavedpos ] ) , 0 ) ;
Bsprintf ( ud . savegame [ lastsavedpos ] , " Auto " ) ;
2006-12-19 20:31:40 +00:00
for ( j = 0 ; j < 13 ; j + + )
Bmemcpy ( & ud . savegame [ lastsavedpos ] [ j + 4 ] , & tempbuf [ j + 3 ] , sizeof ( tempbuf [ j + 3 ] ) ) ;
ud . savegame [ lastsavedpos ] [ j + 4 ] = ' \0 ' ;
2006-11-16 03:02:42 +00:00
OSD_Printf ( " Saving to slot %d \n " , lastsavedpos ) ;
2006-11-13 23:12:47 +00:00
2006-11-16 03:02:42 +00:00
KB_FlushKeyboardQueue ( ) ;
2006-11-13 23:12:47 +00:00
2006-11-16 03:02:42 +00:00
screencapt = 1 ;
displayrooms ( myconnectindex , 65536 ) ;
screencapt = 0 ;
if ( ud . multimode > 1 )
saveplayer ( - 1 - ( lastsavedpos ) ) ;
else saveplayer ( lastsavedpos ) ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
break ;
}
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFMOVE :
insptr + + ;
parseifelse ( g_t [ 1 ] = = * insptr ) ;
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_RESETPLAYER :
{
insptr + + ;
2006-11-15 01:16:55 +00:00
2006-11-16 03:02:42 +00:00
//AddLog("resetplayer");
if ( ud . multimode < 2 )
{
if ( lastsavedpos > = 0 & & ud . recstat ! = 2 )
2006-11-15 01:16:55 +00:00
{
2006-11-16 03:02:42 +00:00
ps [ g_p ] . gm = MODE_MENU ;
KB_ClearKeyDown ( sc_Space ) ;
cmenu ( 15000 ) ;
2006-11-15 01:16:55 +00:00
}
2006-11-16 03:02:42 +00:00
else ps [ g_p ] . gm = MODE_RESTART ;
killit_flag = 2 ;
}
else
{
pickrandomspot ( g_p ) ;
g_sp - > x = hittype [ g_i ] . bposx = ps [ g_p ] . bobposx = ps [ g_p ] . oposx = ps [ g_p ] . posx ;
g_sp - > y = hittype [ g_i ] . bposy = ps [ g_p ] . bobposy = ps [ g_p ] . oposy = ps [ g_p ] . posy ;
g_sp - > z = hittype [ g_i ] . bposy = ps [ g_p ] . oposz = ps [ g_p ] . posz ;
2006-12-02 06:00:49 +00:00
updatesector ( ps [ g_p ] . posx , ps [ g_p ] . posy , & ps [ g_p ] . cursectnum ) ;
2006-11-16 03:02:42 +00:00
setsprite ( ps [ g_p ] . i , ps [ g_p ] . posx , ps [ g_p ] . posy , ps [ g_p ] . posz + PHEIGHT ) ;
g_sp - > cstat = 257 ;
g_sp - > shade = - 12 ;
g_sp - > clipdist = 64 ;
g_sp - > xrepeat = 42 ;
g_sp - > yrepeat = 36 ;
g_sp - > owner = g_i ;
g_sp - > xoffset = 0 ;
g_sp - > pal = ps [ g_p ] . palookup ;
ps [ g_p ] . last_extra = g_sp - > extra = max_player_health ;
ps [ g_p ] . wantweaponfire = - 1 ;
ps [ g_p ] . horiz = 100 ;
ps [ g_p ] . on_crane = - 1 ;
ps [ g_p ] . frag_ps = g_p ;
ps [ g_p ] . horizoff = 0 ;
ps [ g_p ] . opyoff = 0 ;
ps [ g_p ] . wackedbyactor = - 1 ;
ps [ g_p ] . shield_amount = max_armour_amount ;
ps [ g_p ] . dead_flag = 0 ;
ps [ g_p ] . pals_time = 0 ;
ps [ g_p ] . footprintcount = 0 ;
ps [ g_p ] . weapreccnt = 0 ;
ps [ g_p ] . fta = 0 ;
ps [ g_p ] . ftq = 0 ;
ps [ g_p ] . posxv = ps [ g_p ] . posyv = 0 ;
ps [ g_p ] . rotscrnang = 0 ;
ps [ g_p ] . runspeed = dukefriction ;
ps [ g_p ] . falling_counter = 0 ;
hittype [ g_i ] . extra = - 1 ;
hittype [ g_i ] . owner = g_i ;
hittype [ g_i ] . cgg = 0 ;
hittype [ g_i ] . movflag = 0 ;
hittype [ g_i ] . tempang = 0 ;
hittype [ g_i ] . actorstayput = - 1 ;
hittype [ g_i ] . dispicnum = 0 ;
hittype [ g_i ] . owner = ps [ g_p ] . i ;
resetinventory ( g_p ) ;
resetweapons ( g_p ) ;
ps [ g_p ] . reloading = 0 ;
ps [ g_p ] . movement_lock = 0 ;
OnEvent ( EVENT_RESETPLAYER , ps [ g_p ] . i , g_p , - 1 ) ;
cameradist = 0 ;
cameraclock = totalclock ;
2006-11-13 23:12:47 +00:00
}
2006-11-16 03:02:42 +00:00
setpal ( & ps [ g_p ] ) ;
//AddLog("EOF: resetplayer");
}
break ;
case CON_IFONWATER :
parseifelse ( klabs ( g_sp - > z - sector [ g_sp - > sectnum ] . floorz ) < ( 32 < < 8 ) & & sector [ g_sp - > sectnum ] . lotag = = 1 ) ;
break ;
case CON_IFINWATER :
parseifelse ( sector [ g_sp - > sectnum ] . lotag = = 2 ) ;
2006-04-13 20:47:06 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFCOUNT :
insptr + + ;
parseifelse ( g_t [ 0 ] > = * insptr ) ;
break ;
case CON_IFACTOR :
insptr + + ;
parseifelse ( g_sp - > picnum = = * insptr ) ;
break ;
case CON_RESETCOUNT :
insptr + + ;
g_t [ 0 ] = 0 ;
break ;
case CON_ADDINVENTORY :
insptr + = 2 ;
switch ( * ( insptr - 1 ) )
{
case GET_STEROIDS :
ps [ g_p ] . steroids_amount = * insptr ;
ps [ g_p ] . inven_icon = 2 ;
2006-04-13 20:47:06 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case GET_SHIELD :
ps [ g_p ] . shield_amount + = * insptr ; // 100;
if ( ps [ g_p ] . shield_amount > max_player_health )
ps [ g_p ] . shield_amount = max_player_health ;
2006-04-13 20:47:06 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case GET_SCUBA :
ps [ g_p ] . scuba_amount = * insptr ; // 1600;
ps [ g_p ] . inven_icon = 6 ;
2006-04-13 20:47:06 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case GET_HOLODUKE :
ps [ g_p ] . holoduke_amount = * insptr ; // 1600;
ps [ g_p ] . inven_icon = 3 ;
2006-04-13 20:47:06 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case GET_JETPACK :
ps [ g_p ] . jetpack_amount = * insptr ; // 1600;
ps [ g_p ] . inven_icon = 4 ;
2006-04-13 20:47:06 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case GET_ACCESS :
switch ( g_sp - > pal )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
case 0 :
ps [ g_p ] . got_access | = 1 ;
break ;
case 21 :
ps [ g_p ] . got_access | = 2 ;
break ;
case 23 :
ps [ g_p ] . got_access | = 4 ;
break ;
2006-04-13 20:47:06 +00:00
}
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case GET_HEATS :
ps [ g_p ] . heat_amount = * insptr ;
ps [ g_p ] . inven_icon = 5 ;
2006-04-13 20:47:06 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case GET_FIRSTAID :
ps [ g_p ] . inven_icon = 1 ;
ps [ g_p ] . firstaid_amount = * insptr ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case GET_BOOTS :
ps [ g_p ] . inven_icon = 7 ;
ps [ g_p ] . boot_amount = * insptr ;
break ;
2006-11-15 01:16:55 +00:00
}
2006-11-16 03:02:42 +00:00
insptr + + ;
2006-04-13 20:47:06 +00:00
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_HITRADIUS :
hitradius ( g_i , * ( insptr + 1 ) , * ( insptr + 2 ) , * ( insptr + 3 ) , * ( insptr + 4 ) , * ( insptr + 5 ) ) ;
insptr + = 6 ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFP :
{
insptr + + ;
l = * insptr ;
j = 0 ;
s = sprite [ ps [ g_p ] . i ] . xvel ;
if ( ( l & 8 ) & & ps [ g_p ] . on_ground & & ( sync [ g_p ] . bits & 2 ) )
j = 1 ;
else if ( ( l & 16 ) & & ps [ g_p ] . jumping_counter = = 0 & & ! ps [ g_p ] . on_ground & &
ps [ g_p ] . poszv > 2048 )
j = 1 ;
else if ( ( l & 32 ) & & ps [ g_p ] . jumping_counter > 348 )
j = 1 ;
else if ( ( l & 1 ) & & s > = 0 & & s < 8 )
j = 1 ;
else if ( ( l & 2 ) & & s > = 8 & & ! ( sync [ g_p ] . bits & ( 1 < < 5 ) ) )
j = 1 ;
else if ( ( l & 4 ) & & s > = 8 & & sync [ g_p ] . bits & ( 1 < < 5 ) )
j = 1 ;
else if ( ( l & 64 ) & & ps [ g_p ] . posz < ( g_sp - > z - ( 48 < < 8 ) ) )
j = 1 ;
else if ( ( l & 128 ) & & s < = - 8 & & ! ( sync [ g_p ] . bits & ( 1 < < 5 ) ) )
j = 1 ;
else if ( ( l & 256 ) & & s < = - 8 & & ( sync [ g_p ] . bits & ( 1 < < 5 ) ) )
j = 1 ;
else if ( ( l & 512 ) & & ( ps [ g_p ] . quick_kick > 0 | | ( ps [ g_p ] . curr_weapon = = KNEE_WEAPON & & ps [ g_p ] . kickback_pic > 0 ) ) )
j = 1 ;
else if ( ( l & 1024 ) & & sprite [ ps [ g_p ] . i ] . xrepeat < 32 )
j = 1 ;
else if ( ( l & 2048 ) & & ps [ g_p ] . jetpack_on )
j = 1 ;
else if ( ( l & 4096 ) & & ps [ g_p ] . steroids_amount > 0 & & ps [ g_p ] . steroids_amount < 400 )
j = 1 ;
else if ( ( l & 8192 ) & & ps [ g_p ] . on_ground )
j = 1 ;
else if ( ( l & 16384 ) & & sprite [ ps [ g_p ] . i ] . xrepeat > 32 & & sprite [ ps [ g_p ] . i ] . extra > 0 & & ps [ g_p ] . timebeforeexit = = 0 )
j = 1 ;
else if ( ( l & 32768 ) & & sprite [ ps [ g_p ] . i ] . extra < = 0 )
j = 1 ;
else if ( ( l & 65536L ) )
{
if ( g_sp - > picnum = = APLAYER & & ud . multimode > 1 )
j = getincangle ( ps [ otherp ] . ang , getangle ( ps [ g_p ] . posx - ps [ otherp ] . posx , ps [ g_p ] . posy - ps [ otherp ] . posy ) ) ;
else
j = getincangle ( ps [ g_p ] . ang , getangle ( g_sp - > x - ps [ g_p ] . posx , g_sp - > y - ps [ g_p ] . posy ) ) ;
if ( j > - 128 & & j < 128 )
j = 1 ;
else
j = 0 ;
}
parseifelse ( ( long ) j ) ;
}
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFSTRENGTH :
insptr + + ;
parseifelse ( g_sp - > extra < = * insptr ) ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_GUTS :
insptr + = 2 ;
guts ( g_sp , * ( insptr - 1 ) , * insptr , g_p ) ;
insptr + + ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFSPAWNEDBY :
insptr + + ;
parseifelse ( hittype [ g_i ] . picnum = = * insptr ) ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_WACKPLAYER :
insptr + + ;
forceplayerangle ( & ps [ g_p ] ) ;
return 0 ;
case CON_FLASH :
insptr + + ;
sprite [ g_i ] . shade = - 127 ;
ps [ g_p ] . visibility = - 127 ;
lastvisinc = totalclock + 32 ;
return 0 ;
case CON_STOPALLSOUNDS :
insptr + + ;
if ( screenpeek = = g_p )
FX_StopAllSounds ( ) ;
return 0 ;
case CON_IFGAPZL :
insptr + + ;
parseifelse ( ( ( hittype [ g_i ] . floorz - hittype [ g_i ] . ceilingz ) > > 8 ) < * insptr ) ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFHITSPACE :
parseifelse ( sync [ g_p ] . bits & ( 1 < < 29 ) ) ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFOUTSIDE :
parseifelse ( sector [ g_sp - > sectnum ] . ceilingstat & 1 ) ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFMULTIPLAYER :
parseifelse ( ud . multimode > 1 ) ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_OPERATE :
insptr + + ;
if ( sector [ g_sp - > sectnum ] . lotag = = 0 )
{
neartag ( g_sp - > x , g_sp - > y , g_sp - > z - ( 32 < < 8 ) , g_sp - > sectnum , g_sp - > ang , & neartagsector , & neartagwall , & neartagsprite , & neartaghitdist , 768L , 1 ) ;
if ( neartagsector > = 0 & & isanearoperator ( sector [ neartagsector ] . lotag ) )
if ( ( sector [ neartagsector ] . lotag & 0xff ) = = 23 | | sector [ neartagsector ] . floorz = = sector [ neartagsector ] . ceilingz )
if ( ( sector [ neartagsector ] . lotag & 16384 ) = = 0 )
if ( ( sector [ neartagsector ] . lotag & 32768 ) = = 0 )
{
j = headspritesect [ neartagsector ] ;
while ( j > = 0 )
2006-11-15 01:16:55 +00:00
{
2006-11-16 03:02:42 +00:00
if ( sprite [ j ] . picnum = = ACTIVATOR )
break ;
j = nextspritesect [ j ] ;
2006-11-15 01:16:55 +00:00
}
2006-11-16 03:02:42 +00:00
if ( j = = - 1 )
operatesectors ( neartagsector , g_i ) ;
}
}
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFINSPACE :
parseifelse ( ceilingspace ( g_sp - > sectnum ) ) ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_SPRITEPAL :
insptr + + ;
if ( g_sp - > picnum ! = APLAYER )
hittype [ g_i ] . tempang = g_sp - > pal ;
g_sp - > pal = * insptr + + ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_CACTOR :
insptr + + ;
g_sp - > picnum = * insptr + + ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFBULLETNEAR :
parseifelse ( dodge ( g_sp ) = = 1 ) ;
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFRESPAWN :
if ( badguy ( g_sp ) )
parseifelse ( ud . respawn_monsters ) ;
else if ( inventory ( g_sp ) )
parseifelse ( ud . respawn_inventory ) ;
else
parseifelse ( ud . respawn_items ) ;
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFFLOORDISTL :
insptr + + ;
parseifelse ( ( hittype [ g_i ] . floorz - g_sp - > z ) < = ( ( * insptr ) < < 8 ) ) ;
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFCEILINGDISTL :
insptr + + ;
parseifelse ( ( g_sp - > z - hittype [ g_i ] . ceilingz ) < = ( ( * insptr ) < < 8 ) ) ;
break ;
2006-11-15 01:16:55 +00:00
2006-11-16 03:02:42 +00:00
case CON_PALFROM :
insptr + + ;
ps [ g_p ] . pals_time = * insptr + + ;
for ( j = 0 ; j < 3 ; j + + )
ps [ g_p ] . pals [ j ] = * insptr + + ;
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_QSPRINTF :
2006-12-18 08:37:12 +00:00
insptr + + ;
2006-11-16 03:02:42 +00:00
{
2006-12-18 08:37:12 +00:00
int dq = * insptr + + , sq = * insptr + + ;
2006-11-16 03:02:42 +00:00
if ( fta_quotes [ sq ] ! = NULL & & fta_quotes [ dq ] ! = NULL )
{
2006-12-18 08:37:12 +00:00
int var1 = GetGameVarID ( * insptr + + , g_i , g_p ) , var2 = GetGameVarID ( * insptr + + , g_i , g_p ) ;
int var3 = GetGameVarID ( * insptr + + , g_i , g_p ) , var4 = GetGameVarID ( * insptr + + , g_i , g_p ) ;
Bstrcpy ( tempbuf , fta_quotes [ sq ] ) ;
2006-11-16 03:02:42 +00:00
Bsprintf ( fta_quotes [ dq ] , tempbuf , var1 , var2 , var3 , var4 ) ;
2006-12-18 08:37:12 +00:00
break ;
2006-11-15 01:16:55 +00:00
}
2006-12-18 08:37:12 +00:00
if ( fta_quotes [ sq ] = = NULL ) OSD_Printf ( " %s %d null quote %d \n " , __FILE__ , __LINE__ , sq ) ;
if ( fta_quotes [ dq ] = = NULL ) OSD_Printf ( " %s %d null quote %d \n " , __FILE__ , __LINE__ , dq ) ;
insptr + = 5 ;
2006-11-16 03:02:42 +00:00
break ;
}
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_ADDLOG :
{
insptr + + ;
2006-12-18 08:37:12 +00:00
Bsprintf ( g_szBuf , " CONLOG: L=%ld " , * insptr + + ) ;
2006-11-16 03:02:42 +00:00
AddLog ( g_szBuf ) ;
break ;
}
2006-11-15 01:16:55 +00:00
2006-11-16 03:02:42 +00:00
case CON_ADDLOGVAR :
2006-12-18 21:29:55 +00:00
insptr + + ;
2006-11-16 03:02:42 +00:00
{
2006-12-18 21:29:55 +00:00
int m = 1 ;
2006-11-16 03:02:42 +00:00
char szBuf [ 256 ] ;
2006-12-18 21:29:55 +00:00
long l = * insptr + + , lVarID = * insptr ;
2006-11-16 03:02:42 +00:00
if ( ( lVarID > = iGameVarCount ) | | lVarID < 0 )
{
if ( * insptr = = MAXGAMEVARS ) // addlogvar for a constant? Har.
insptr + + ;
else if ( * insptr & ( MAXGAMEVARS < < 1 ) )
2006-11-15 01:16:55 +00:00
{
2006-11-16 03:02:42 +00:00
m = - 1 ;
lVarID ^ = ( MAXGAMEVARS < < 1 ) ;
2006-11-15 01:16:55 +00:00
}
2006-12-19 20:31:40 +00:00
else
{
// invalid varID
insptr + + ;
Bsprintf ( g_szBuf , " CONLOGVAR: L=%ld INVALID VARIABLE " , l ) ;
AddLog ( g_szBuf ) ;
break ; // out of switch
}
2006-04-13 20:47:06 +00:00
}
2006-11-16 03:02:42 +00:00
Bsprintf ( szBuf , " CONLOGVAR: L=%ld %s " , l , aGameVars [ lVarID ] . szLabel ) ;
strcpy ( g_szBuf , szBuf ) ;
2006-11-15 01:16:55 +00:00
2006-11-16 03:02:42 +00:00
if ( aGameVars [ lVarID ] . dwFlags & GAMEVAR_FLAG_READONLY )
2006-11-13 23:12:47 +00:00
{
2006-11-16 03:02:42 +00:00
Bsprintf ( szBuf , " (read-only) " ) ;
strcat ( g_szBuf , szBuf ) ;
2006-11-15 01:16:55 +00:00
}
2006-11-16 03:02:42 +00:00
if ( aGameVars [ lVarID ] . dwFlags & GAMEVAR_FLAG_PERPLAYER )
{
Bsprintf ( szBuf , " (Per Player. Player=%d) " , g_p ) ;
}
else if ( aGameVars [ lVarID ] . dwFlags & GAMEVAR_FLAG_PERACTOR )
2006-11-15 01:16:55 +00:00
{
2006-11-16 03:02:42 +00:00
Bsprintf ( szBuf , " (Per Actor. Actor=%d) " , g_i ) ;
}
else
{
Bsprintf ( szBuf , " (Global) " ) ;
}
strcat ( g_szBuf , szBuf ) ;
Bsprintf ( szBuf , " =%ld " , GetGameVarID ( lVarID , g_i , g_p ) * m ) ;
strcat ( g_szBuf , szBuf ) ;
AddLog ( g_szBuf ) ;
insptr + + ;
break ;
}
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_SETSECTOR :
case CON_GETSECTOR :
2006-12-18 09:32:17 +00:00
insptr + + ;
2006-11-16 03:02:42 +00:00
{
// syntax [gs]etsector[<var>].x <VAR>
// <varid> <xxxid> <varid>
2006-12-18 09:32:17 +00:00
int lVar1 = * insptr + + , lLabelID = * insptr + + , lVar2 = * insptr + + ;
DoSector ( tw = = CON_SETSECTOR , lVar1 , lLabelID , lVar2 ) ;
2006-11-16 03:02:42 +00:00
break ;
}
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_SQRT :
2006-12-18 09:32:17 +00:00
insptr + + ;
2006-11-16 03:02:42 +00:00
{
// syntax sqrt <invar> <outvar>
2006-12-18 09:32:17 +00:00
int lInVarID = * insptr + + , lOutVarID = * insptr + + ;
SetGameVarID ( lOutVarID , ksqrt ( GetGameVarID ( lInVarID , g_i , g_p ) ) , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
}
case CON_FINDNEARACTOR :
case CON_FINDNEARSPRITE :
case CON_FINDNEARACTOR3D :
case CON_FINDNEARSPRITE3D :
2006-12-18 09:32:17 +00:00
insptr + + ;
2006-11-16 03:02:42 +00:00
{
// syntax findnearactorvar <type> <maxdist> <getvar>
// gets the sprite ID of the nearest actor within max dist
// that is of <type> into <getvar>
// -1 for none found
// <type> <maxdist> <varid>
2006-12-18 09:32:17 +00:00
int lType = * insptr + + , lMaxDist = * insptr + + , lVarID = * insptr + + ;
int lFound = - 1 , lTemp , j , k ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
for ( k = 0 ; k < MAXSTATUS ; k + + )
{
j = headspritestat [ ( tw = = CON_FINDNEARACTOR | | tw = = CON_FINDNEARACTOR3D ) ? 1 : k ] ; // all sprites
while ( j > = 0 )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
if ( sprite [ j ] . picnum = = lType & & j ! = g_i )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
if ( tw = = CON_FINDNEARACTOR3D | | tw = = CON_FINDNEARSPRITE3D )
lTemp = dist ( & sprite [ g_i ] , & sprite [ j ] ) ;
else lTemp = ldist ( & sprite [ g_i ] , & sprite [ j ] ) ;
if ( lTemp < lMaxDist )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
lFound = j ;
j = MAXSPRITES ;
break ;
2006-04-13 20:47:06 +00:00
}
}
2006-11-16 03:02:42 +00:00
j = nextspritestat [ j ] ;
2006-04-13 20:47:06 +00:00
}
2006-11-16 03:02:42 +00:00
if ( ( tw = = CON_FINDNEARACTOR | | tw = = CON_FINDNEARACTOR3D ) | | j = = MAXSPRITES )
break ;
2006-04-13 20:47:06 +00:00
}
2006-11-16 03:02:42 +00:00
SetGameVarID ( lVarID , lFound , g_i , g_p ) ;
break ;
}
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_FINDNEARACTORVAR :
case CON_FINDNEARSPRITEVAR :
case CON_FINDNEARACTOR3DVAR :
case CON_FINDNEARSPRITE3DVAR :
2006-12-18 09:32:17 +00:00
insptr + + ;
2006-11-16 03:02:42 +00:00
{
// syntax findnearactorvar <type> <maxdistvar> <getvar>
// gets the sprite ID of the nearest actor within max dist
// that is of <type> into <getvar>
// -1 for none found
// <type> <maxdistvarid> <varid>
2006-12-18 09:32:17 +00:00
int lType = * insptr + + , lMaxDist = GetGameVarID ( * insptr + + , g_i , g_p ) , lVarID = * insptr + + ;
int lFound = - 1 , lTemp , j , k ;
2006-11-16 03:02:42 +00:00
for ( k = 0 ; k < MAXSTATUS ; k + + )
{
j = headspritestat [ ( tw = = CON_FINDNEARACTORVAR | | tw = = CON_FINDNEARACTOR3DVAR ) ? 1 : k ] ; // all sprites
while ( j > = 0 )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
if ( sprite [ j ] . picnum = = lType & & j ! = g_i )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
if ( tw = = CON_FINDNEARACTOR3DVAR | | tw = = CON_FINDNEARSPRITE3DVAR )
lTemp = dist ( & sprite [ g_i ] , & sprite [ j ] ) ;
else lTemp = ldist ( & sprite [ g_i ] , & sprite [ j ] ) ;
if ( lTemp < lMaxDist )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
lFound = j ;
j = MAXSPRITES ;
break ;
2006-11-15 01:16:55 +00:00
}
}
2006-11-16 03:02:42 +00:00
j = nextspritestat [ j ] ;
2006-04-13 20:47:06 +00:00
}
2006-11-16 03:02:42 +00:00
if ( ( tw = = CON_FINDNEARACTORVAR | | tw = = CON_FINDNEARACTOR3DVAR ) | | j = = MAXSPRITES )
break ;
2006-04-13 20:47:06 +00:00
}
2006-11-16 03:02:42 +00:00
SetGameVarID ( lVarID , lFound , g_i , g_p ) ;
break ;
}
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_FINDNEARACTORZVAR :
case CON_FINDNEARSPRITEZVAR :
2006-12-18 09:32:17 +00:00
insptr + + ;
2006-11-16 03:02:42 +00:00
{
// syntax findnearactorvar <type> <maxdistvar> <getvar>
// gets the sprite ID of the nearest actor within max dist
// that is of <type> into <getvar>
// -1 for none found
// <type> <maxdistvarid> <varid>
2006-12-18 09:32:17 +00:00
int lType = * insptr + + , lMaxDist = GetGameVarID ( * insptr + + , g_i , g_p ) , lMaxZDist = GetGameVarID ( * insptr + + , g_i , g_p ) ;
int lVarID = * insptr + + , lFound = - 1 , lTemp , lTemp2 , j , k ;
2006-11-16 03:02:42 +00:00
for ( k = 0 ; k < MAXSTATUS ; k + + )
{
j = headspritestat [ tw = = CON_FINDNEARACTORZVAR ? 1 : k ] ; // all sprites
while ( j > = 0 )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
if ( sprite [ j ] . picnum = = lType & & j ! = g_i )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
lTemp = ldist ( & sprite [ g_i ] , & sprite [ j ] ) ;
if ( lTemp < lMaxDist )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
lTemp2 = klabs ( sprite [ g_i ] . z - sprite [ j ] . z ) ;
if ( lTemp2 < lMaxZDist )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
lFound = j ;
j = MAXSPRITES ;
break ;
2006-04-13 20:47:06 +00:00
}
}
}
2006-11-16 03:02:42 +00:00
j = nextspritestat [ j ] ;
2006-04-13 20:47:06 +00:00
}
2006-11-16 03:02:42 +00:00
if ( tw = = CON_FINDNEARACTORZVAR | | j = = MAXSPRITES )
break ;
2006-11-15 01:16:55 +00:00
}
2006-11-16 03:02:42 +00:00
SetGameVarID ( lVarID , lFound , g_i , g_p ) ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
break ;
}
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_FINDNEARACTORZ :
case CON_FINDNEARSPRITEZ :
2006-12-18 09:32:17 +00:00
insptr + + ;
2006-11-16 03:02:42 +00:00
{
// syntax findnearactorvar <type> <maxdist> <getvar>
// gets the sprite ID of the nearest actor within max dist
// that is of <type> into <getvar>
// -1 for none found
// <type> <maxdist> <varid>
2006-12-18 09:32:17 +00:00
int lType = * insptr + + , lMaxDist = * insptr + + , lMaxZDist = * insptr + + , lVarID = * insptr + + ;
int lTemp , lTemp2 , lFound = - 1 , j , k ;
2006-11-16 03:02:42 +00:00
for ( k = 0 ; k < MAXSTATUS ; k + + )
{
j = headspritestat [ tw = = CON_FINDNEARACTORZ ? 1 : k ] ; // all sprites
while ( j > = 0 )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
if ( sprite [ j ] . picnum = = lType & & j ! = g_i )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
lTemp = ldist ( & sprite [ g_i ] , & sprite [ j ] ) ;
if ( lTemp < lMaxDist )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
lTemp2 = klabs ( sprite [ g_i ] . z - sprite [ j ] . z ) ;
if ( lTemp2 < lMaxZDist )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
lFound = j ;
j = MAXSPRITES ;
break ;
2006-04-13 20:47:06 +00:00
}
}
}
2006-11-16 03:02:42 +00:00
j = nextspritestat [ j ] ;
2006-04-13 20:47:06 +00:00
}
2006-11-16 03:02:42 +00:00
if ( tw = = CON_FINDNEARACTORZ | | j = = MAXSPRITES )
break ;
2006-04-13 20:47:06 +00:00
}
2006-11-16 03:02:42 +00:00
SetGameVarID ( lVarID , lFound , g_i , g_p ) ;
break ;
}
2006-05-22 07:11:30 +00:00
2006-11-16 03:02:42 +00:00
case CON_FINDPLAYER :
case CON_FINDOTHERPLAYER :
2006-12-18 21:29:55 +00:00
insptr + + ;
2006-11-16 03:02:42 +00:00
{
// syntax findnearactorvar <type> <maxdistvar> <getvar>
// gets the sprite ID of the nearest actor within max dist
// that is of <type> into <getvar>
// -1 for none found
// <type> <maxdistvarid> <varid>
short j = 0 ;
2006-12-18 21:29:55 +00:00
long var1 = * insptr + + , d ;
2006-11-16 03:02:42 +00:00
if ( tw = = CON_FINDPLAYER ) j = findplayer ( & sprite [ g_i ] , & d ) ;
else if ( tw = = CON_FINDOTHERPLAYER ) j = findotherplayer ( g_i , & d ) ;
SetGameVarID ( g_iReturnVarID , j , g_i , g_p ) ;
SetGameVarID ( var1 , d , g_i , g_p ) ;
2006-05-22 07:11:30 +00:00
2006-11-16 03:02:42 +00:00
break ;
}
case CON_SETPLAYER :
case CON_GETPLAYER :
2006-12-18 09:32:17 +00:00
insptr + + ;
2006-11-16 03:02:42 +00:00
{
// syntax [gs]etplayer[<var>].x <VAR>
// <varid> <xxxid> <varid>
2006-12-18 09:32:17 +00:00
int lVar1 = * insptr + + , lLabelID = * insptr + + , lParm2 , lVar2 ;
2006-11-16 03:02:42 +00:00
// HACK: need to have access to labels structure at run-time...
2006-11-13 23:12:47 +00:00
2006-11-16 03:02:42 +00:00
switch ( lLabelID )
{
case PLAYER_AMMO_AMOUNT :
case PLAYER_GOTWEAPON :
case PLAYER_PALS :
case PLAYER_LOOGIEX :
case PLAYER_LOOGIEY :
lParm2 = GetGameVarID ( * insptr + + , g_i , g_p ) ;
break ;
default :
lParm2 = 0 ;
2006-04-13 20:47:06 +00:00
break ;
}
2006-11-16 03:02:42 +00:00
lVar2 = * insptr + + ;
2006-11-13 23:12:47 +00:00
2006-12-18 09:32:17 +00:00
DoPlayer ( tw = = CON_SETPLAYER , lVar1 , lLabelID , lVar2 , lParm2 ) ;
2006-11-16 03:02:42 +00:00
break ;
}
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_SETINPUT :
case CON_GETINPUT :
2006-12-18 09:32:17 +00:00
insptr + + ;
2006-11-16 03:02:42 +00:00
{
// syntax [gs]etplayer[<var>].x <VAR>
// <varid> <xxxid> <varid>
2006-12-18 09:32:17 +00:00
int lVar1 = * insptr + + , lLabelID = * insptr + + , lVar2 = * insptr + + ;
2006-04-13 20:47:06 +00:00
2006-12-18 09:32:17 +00:00
DoInput ( tw = = CON_SETINPUT , lVar1 , lLabelID , lVar2 ) ;
2006-11-16 03:02:42 +00:00
break ;
}
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_GETUSERDEF :
case CON_SETUSERDEF :
2006-12-18 09:32:17 +00:00
insptr + + ;
2006-11-16 03:02:42 +00:00
{
// syntax [gs]etuserdef.xxx <VAR>
// <xxxid> <varid>
2006-12-18 09:32:17 +00:00
int lLabelID = * insptr + + , lVar2 = * insptr + + ;
2006-04-13 20:47:06 +00:00
2006-12-18 09:32:17 +00:00
DoUserDef ( tw = = CON_SETUSERDEF , lLabelID , lVar2 ) ;
2006-11-16 03:02:42 +00:00
break ;
}
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_GETPROJECTILE :
case CON_SETPROJECTILE :
2006-12-18 09:32:17 +00:00
insptr + + ;
2006-11-16 03:02:42 +00:00
{
// syntax [gs]etplayer[<var>].x <VAR>
// <varid> <xxxid> <varid>
2006-12-18 09:32:17 +00:00
int lVar1 = GetGameVarID ( * insptr + + , g_i , g_p ) , lLabelID = * insptr + + , lVar2 = * insptr + + ;
DoProjectile ( tw = = CON_SETPROJECTILE , lVar1 , lLabelID , lVar2 ) ;
2006-11-16 03:02:42 +00:00
break ;
}
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_SETWALL :
case CON_GETWALL :
2006-12-18 09:32:17 +00:00
insptr + + ;
2006-11-16 03:02:42 +00:00
{
// syntax [gs]etwall[<var>].x <VAR>
// <varid> <xxxid> <varid>
2006-12-18 09:32:17 +00:00
int lVar1 = * insptr + + , lLabelID = * insptr + + , lVar2 = * insptr + + ;
2006-04-13 20:47:06 +00:00
2006-12-18 09:32:17 +00:00
DoWall ( tw = = CON_SETWALL , lVar1 , lLabelID , lVar2 ) ;
2006-11-16 03:02:42 +00:00
break ;
}
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_SETACTORVAR :
case CON_GETACTORVAR :
2006-12-18 09:32:17 +00:00
insptr + + ;
2006-11-16 03:02:42 +00:00
{
// syntax [gs]etactorvar[<var>].<varx> <VAR>
// gets the value of the per-actor variable varx into VAR
// <var> <varx> <VAR>
2006-12-18 09:32:17 +00:00
int lSprite = GetGameVarID ( * insptr + + , g_i , g_p ) , lVar1 = * insptr + + , lVar2 = * insptr + + ;
if ( tw = = CON_SETACTORVAR )
2006-11-16 03:02:42 +00:00
{
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar1 , GetGameVarID ( lVar2 , g_i , g_p ) , lSprite , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
}
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , GetGameVarID ( lVar1 , lSprite , g_p ) , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
}
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_SETPLAYERVAR :
case CON_GETPLAYERVAR :
2006-12-18 09:32:17 +00:00
insptr + + ;
2006-11-16 03:02:42 +00:00
{
// syntax [gs]etactorvar[<var>].<varx> <VAR>
// gets the value of the per-actor variable varx into VAR
// <var> <varx> <VAR>
2006-12-18 09:32:17 +00:00
int lSprite = GetGameVarID ( * insptr + + , g_i , g_p ) , lVar1 = * insptr + + , lVar2 = * insptr + + ;
if ( tw = = CON_SETPLAYERVAR )
2006-11-16 03:02:42 +00:00
{
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar1 , GetGameVarID ( lVar2 , g_i , g_p ) , g_i , lSprite ) ;
2006-11-16 03:02:42 +00:00
break ;
}
2006-12-18 09:32:17 +00:00
SetGameVarID ( lVar2 , GetGameVarID ( lVar1 , g_i , lSprite ) , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
}
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_SETACTOR :
case CON_GETACTOR :
2006-12-18 09:32:17 +00:00
insptr + + ;
2006-11-16 03:02:42 +00:00
{
// syntax [gs]etactor[<var>].x <VAR>
// <varid> <xxxid> <varid>
2006-04-13 20:47:06 +00:00
2006-12-18 09:32:17 +00:00
int lVar1 = * insptr + + , lLabelID = * insptr + + , lParm2 , lVar2 ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
switch ( lLabelID )
{
case ACTOR_HTG_T :
lParm2 = GetGameVarID ( * insptr + + , g_i , g_p ) ;
break ;
default :
lParm2 = 0 ;
2006-04-13 20:47:06 +00:00
break ;
}
2006-11-16 03:02:42 +00:00
lVar2 = * insptr + + ;
2006-04-18 02:01:48 +00:00
2006-12-18 09:32:17 +00:00
DoActor ( tw = = CON_SETACTOR , lVar1 , lLabelID , lVar2 , lParm2 ) ;
2006-11-16 03:02:42 +00:00
break ;
}
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_GETANGLETOTARGET :
2006-12-18 21:29:55 +00:00
insptr + + ;
2006-11-16 03:02:42 +00:00
// hittype[g_i].lastvx and lastvy are last known location of target.
2006-12-18 21:29:55 +00:00
SetGameVarID ( * insptr + + , getangle ( hittype [ g_i ] . lastvx - g_sp - > x , hittype [ g_i ] . lastvy - g_sp - > y ) , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_ANGOFFVAR :
insptr + + ;
2006-12-18 09:32:17 +00:00
spriteext [ g_i ] . angoff = GetGameVarID ( * insptr + + , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_LOCKPLAYER :
insptr + + ;
2006-12-18 09:32:17 +00:00
ps [ g_p ] . transporter_hold = GetGameVarID ( * insptr + + , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_CHECKAVAILWEAPON :
case CON_CHECKAVAILINVEN :
2006-12-18 21:29:55 +00:00
insptr + + ;
j = g_p ;
2006-04-18 02:01:48 +00:00
2006-12-18 09:32:17 +00:00
if ( * insptr ! = g_iThisActorID )
2006-12-18 21:29:55 +00:00
j = GetGameVarID ( * insptr + + , g_i , g_p ) ;
2006-12-18 09:32:17 +00:00
2006-12-18 21:29:55 +00:00
if ( j < MAXPLAYERS )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
if ( tw = = CON_CHECKAVAILWEAPON )
2006-12-18 21:29:55 +00:00
checkavailweapon ( & ps [ j ] ) ;
else checkavailinven ( & ps [ j ] ) ;
2006-04-13 20:47:06 +00:00
}
2006-11-16 03:02:42 +00:00
break ;
2006-11-13 23:12:47 +00:00
2006-11-16 03:02:42 +00:00
case CON_GETPLAYERANGLE :
insptr + + ;
2006-12-18 09:32:17 +00:00
SetGameVarID ( * insptr + + , ps [ g_p ] . ang , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-11-13 23:12:47 +00:00
2006-11-16 03:02:42 +00:00
case CON_SETPLAYERANGLE :
insptr + + ;
2006-12-18 09:32:17 +00:00
ps [ g_p ] . ang = GetGameVarID ( * insptr + + , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
ps [ g_p ] . ang & = 2047 ;
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_GETACTORANGLE :
insptr + + ;
2006-12-18 09:32:17 +00:00
SetGameVarID ( * insptr + + , g_sp - > ang , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_SETACTORANGLE :
insptr + + ;
2006-12-18 09:32:17 +00:00
g_sp - > ang = GetGameVarID ( * insptr + + , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
g_sp - > ang & = 2047 ;
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_SETVAR :
2006-12-18 21:29:55 +00:00
insptr + + ;
SetGameVarID ( * insptr , * ( insptr + 1 ) , g_i , g_p ) ;
insptr + = 2 ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_RANDVAR :
2006-12-18 21:29:55 +00:00
insptr + + ;
SetGameVarID ( * insptr , mulscale ( krand ( ) , * ( insptr + 1 ) + 1 , 16 ) , g_i , g_p ) ;
insptr + = 2 ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_DISPLAYRANDVAR :
2006-12-18 21:29:55 +00:00
insptr + + ;
SetGameVarID ( * insptr , mulscale ( rand ( ) , * ( insptr + 1 ) + 1 , 15 ) , g_i , g_p ) ;
insptr + = 2 ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_MULVAR :
2006-12-18 21:29:55 +00:00
insptr + + ;
SetGameVarID ( * insptr , GetGameVarID ( * insptr , g_i , g_p ) * * ( insptr + 1 ) , g_i , g_p ) ;
insptr + = 2 ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_DIVVAR :
2006-12-18 21:29:55 +00:00
insptr + + ;
if ( * ( insptr + 1 ) = = 0 )
2006-11-16 03:02:42 +00:00
gameexit ( " CON_DIVVAR: Divide by zero. " ) ;
2006-12-18 21:29:55 +00:00
SetGameVarID ( * insptr , GetGameVarID ( * insptr , g_i , g_p ) / * ( insptr + 1 ) , g_i , g_p ) ;
insptr + = 2 ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_MODVAR :
2006-12-18 21:29:55 +00:00
insptr + + ;
if ( * ( insptr + 1 ) = = 0 )
2006-11-16 03:02:42 +00:00
gameexit ( " CON_MODVAR: Mod by zero. " ) ;
2006-12-18 21:29:55 +00:00
SetGameVarID ( * insptr , GetGameVarID ( * insptr , g_i , g_p ) % * ( insptr + 1 ) , g_i , g_p ) ;
insptr + = 2 ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_ANDVAR :
2006-12-18 21:29:55 +00:00
insptr + + ;
SetGameVarID ( * insptr , GetGameVarID ( * insptr , g_i , g_p ) & * ( insptr + 1 ) , g_i , g_p ) ;
insptr + = 2 ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_ORVAR :
2006-12-18 21:29:55 +00:00
insptr + + ;
SetGameVarID ( * insptr , GetGameVarID ( * insptr , g_i , g_p ) | * ( insptr + 1 ) , g_i , g_p ) ;
insptr + = 2 ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_XORVAR :
2006-12-18 21:29:55 +00:00
insptr + + ;
SetGameVarID ( * insptr , GetGameVarID ( * insptr , g_i , g_p ) ^ * ( insptr + 1 ) , g_i , g_p ) ;
insptr + = 2 ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-12-19 20:31:40 +00:00
case CON_SETVARVAR :
insptr + + ;
j = * insptr + + ;
SetGameVarID ( j , GetGameVarID ( * insptr + + , g_i , g_p ) , g_i , g_p ) ;
break ;
2006-11-16 03:02:42 +00:00
case CON_RANDVARVAR :
2006-12-18 21:29:55 +00:00
insptr + + ;
j = * insptr + + ;
SetGameVarID ( j , mulscale ( krand ( ) , GetGameVarID ( * insptr + + , g_i , g_p ) + 1 , 16 ) , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_DISPLAYRANDVARVAR :
2006-12-18 21:29:55 +00:00
insptr + + ;
j = * insptr + + ;
SetGameVarID ( j , mulscale ( rand ( ) , GetGameVarID ( * insptr + + , g_i , g_p ) + 1 , 15 ) , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_GMAXAMMO :
2006-12-18 21:29:55 +00:00
insptr + + ;
j = GetGameVarID ( * insptr + + , g_i , g_p ) ;
SetGameVarID ( * insptr + + , max_ammo_amount [ j ] , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_SMAXAMMO :
2006-12-18 21:29:55 +00:00
insptr + + ;
j = GetGameVarID ( * insptr + + , g_i , g_p ) ;
max_ammo_amount [ j ] = GetGameVarID ( * insptr + + , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_MULVARVAR :
2006-12-18 21:29:55 +00:00
insptr + + ;
j = * insptr + + ;
SetGameVarID ( j , GetGameVarID ( j , g_i , g_p ) * GetGameVarID ( * insptr + + , g_i , g_p ) , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_DIVVARVAR :
2006-12-18 21:29:55 +00:00
insptr + + ;
j = * insptr + + ;
{
int l2 = GetGameVarID ( * insptr + + , g_i , g_p ) ;
2006-12-18 09:32:17 +00:00
2006-12-18 21:29:55 +00:00
if ( l2 = = 0 )
gameexit ( " CON_DIVVARVAR: Divide by zero. " ) ;
SetGameVarID ( j , GetGameVarID ( j , g_i , g_p ) / l2 , g_i , g_p ) ;
break ;
}
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_MODVARVAR :
2006-12-18 21:29:55 +00:00
insptr + + ;
j = * insptr + + ;
{
int l2 = GetGameVarID ( * insptr + + , g_i , g_p ) ;
2006-12-18 09:32:17 +00:00
2006-12-18 21:29:55 +00:00
if ( l2 = = 0 )
gameexit ( " CON_MODVARVAR: Mod by zero. " ) ;
SetGameVarID ( j , GetGameVarID ( j , g_i , g_p ) % l2 , g_i , g_p ) ;
break ;
}
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_ANDVARVAR :
2006-12-18 21:29:55 +00:00
insptr + + ;
j = * insptr + + ;
SetGameVarID ( j , GetGameVarID ( j , g_i , g_p ) & GetGameVarID ( * insptr + + , g_i , g_p ) , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_XORVARVAR :
2006-12-18 21:29:55 +00:00
insptr + + ;
j = * insptr + + ;
SetGameVarID ( j , GetGameVarID ( j , g_i , g_p ) ^ GetGameVarID ( * insptr + + , g_i , g_p ) , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_ORVARVAR :
2006-12-18 21:29:55 +00:00
insptr + + ;
j = * insptr + + ;
SetGameVarID ( j , GetGameVarID ( j , g_i , g_p ) | GetGameVarID ( * insptr + + , g_i , g_p ) , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_SUBVAR :
2006-12-18 21:29:55 +00:00
insptr + + ;
SetGameVarID ( * insptr , GetGameVarID ( * insptr , g_i , g_p ) - * ( insptr + 1 ) , g_i , g_p ) ;
insptr + = 2 ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_SUBVARVAR :
2006-12-18 21:29:55 +00:00
insptr + + ;
j = * insptr + + ;
SetGameVarID ( j , GetGameVarID ( j , g_i , g_p ) - GetGameVarID ( * insptr + + , g_i , g_p ) , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_ADDVAR :
2006-12-18 21:29:55 +00:00
insptr + + ;
SetGameVarID ( * insptr , GetGameVarID ( * insptr , g_i , g_p ) + * ( insptr + 1 ) , g_i , g_p ) ;
insptr + = 2 ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_SHIFTVARL :
2006-12-18 21:29:55 +00:00
insptr + + ;
SetGameVarID ( * insptr , GetGameVarID ( * insptr , g_i , g_p ) < < * ( insptr + 1 ) , g_i , g_p ) ;
insptr + = 2 ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_SHIFTVARR :
2006-12-18 21:29:55 +00:00
insptr + + ;
SetGameVarID ( * insptr , GetGameVarID ( * insptr , g_i , g_p ) > > * ( insptr + 1 ) , g_i , g_p ) ;
insptr + = 2 ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_SIN :
2006-12-18 21:29:55 +00:00
insptr + + ;
SetGameVarID ( * insptr , sintable [ GetGameVarID ( * ( insptr + 1 ) , g_i , g_p ) & 2047 ] , g_i , g_p ) ;
insptr + = 2 ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_COS :
2006-12-18 21:29:55 +00:00
insptr + + ;
SetGameVarID ( * insptr , sintable [ ( GetGameVarID ( * ( insptr + 1 ) , g_i , g_p ) + 512 ) & 2047 ] , g_i , g_p ) ;
insptr + = 2 ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_ADDVARVAR :
2006-12-18 21:29:55 +00:00
insptr + + ;
j = * insptr + + ;
SetGameVarID ( j , GetGameVarID ( j , g_i , g_p ) + GetGameVarID ( * insptr + + , g_i , g_p ) , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_SPGETLOTAG :
insptr + + ;
SetGameVarID ( g_iLoTagID , g_sp - > lotag , g_i , g_p ) ;
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_SPGETHITAG :
insptr + + ;
SetGameVarID ( g_iHiTagID , g_sp - > hitag , g_i , g_p ) ;
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_SECTGETLOTAG :
insptr + + ;
SetGameVarID ( g_iLoTagID , sector [ g_sp - > sectnum ] . lotag , g_i , g_p ) ;
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_SECTGETHITAG :
insptr + + ;
SetGameVarID ( g_iHiTagID , sector [ g_sp - > sectnum ] . hitag , g_i , g_p ) ;
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_GETTEXTUREFLOOR :
insptr + + ;
SetGameVarID ( g_iTextureID , sector [ g_sp - > sectnum ] . floorpicnum , g_i , g_p ) ;
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_STARTTRACK :
insptr + + ;
music_select = * insptr + + ;
2006-12-06 23:14:49 +00:00
if ( music_fn [ ud . volume_number ] [ ( unsigned char ) music_select ] ! = NULL )
playmusic ( & music_fn [ ud . volume_number ] [ ( unsigned char ) music_select ] [ 0 ] ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_GETTEXTURECEILING :
insptr + + ;
SetGameVarID ( g_iTextureID , sector [ g_sp - > sectnum ] . ceilingpicnum , g_i , g_p ) ;
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFVARVARAND :
2006-12-18 21:29:55 +00:00
insptr + + ;
j = * insptr + + ;
parseifelse ( GetGameVarID ( j , g_i , g_p ) & GetGameVarID ( * ( insptr ) , g_i , g_p ) ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFVARVARN :
2006-12-18 21:29:55 +00:00
insptr + + ;
j = * insptr + + ;
parseifelse ( GetGameVarID ( j , g_i , g_p ) ! = GetGameVarID ( * ( insptr ) , g_i , g_p ) ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFVARVARE :
2006-12-18 21:29:55 +00:00
insptr + + ;
j = * insptr + + ;
parseifelse ( GetGameVarID ( j , g_i , g_p ) = = GetGameVarID ( * ( insptr ) , g_i , g_p ) ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFVARVARG :
2006-12-18 21:29:55 +00:00
insptr + + ;
j = * insptr + + ;
parseifelse ( GetGameVarID ( j , g_i , g_p ) > GetGameVarID ( * ( insptr ) , g_i , g_p ) ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFVARVARL :
2006-12-18 21:29:55 +00:00
insptr + + ;
j = * insptr + + ;
parseifelse ( GetGameVarID ( j , g_i , g_p ) < GetGameVarID ( * ( insptr ) , g_i , g_p ) ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFVARE :
2006-12-18 21:29:55 +00:00
insptr + + ;
j = * insptr + + ;
parseifelse ( GetGameVarID ( j , g_i , g_p ) = = * insptr ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-11-13 23:12:47 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFVARN :
2006-12-18 21:29:55 +00:00
insptr + + ;
j = * insptr + + ;
parseifelse ( GetGameVarID ( j , g_i , g_p ) ! = * insptr ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-11-13 23:12:47 +00:00
2006-11-16 03:02:42 +00:00
case CON_WHILEVARN :
{
int i ;
2006-12-18 09:32:17 +00:00
long * savedinsptr = insptr ;
2006-11-16 03:02:42 +00:00
j = 1 ;
while ( j )
2006-11-15 01:16:55 +00:00
{
2006-11-16 03:02:42 +00:00
insptr = savedinsptr ;
2006-11-15 01:16:55 +00:00
insptr + + ;
2006-12-18 09:32:17 +00:00
i = * insptr + + ;
2006-11-15 01:16:55 +00:00
j = 0 ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
if ( GetGameVarID ( i , g_i , g_p ) ! = * insptr )
2006-11-15 01:16:55 +00:00
j = 1 ;
parseifelse ( j ) ;
}
2006-11-16 03:02:42 +00:00
break ;
}
2006-11-13 23:12:47 +00:00
2006-11-16 03:02:42 +00:00
case CON_WHILEVARVARN :
{
int i , k ;
2006-12-18 09:32:17 +00:00
long * savedinsptr = insptr ;
2006-11-16 03:02:42 +00:00
j = 1 ;
while ( j )
2006-11-15 01:16:55 +00:00
{
2006-11-16 03:02:42 +00:00
insptr = savedinsptr ;
2006-11-15 01:16:55 +00:00
insptr + + ;
2006-12-18 09:32:17 +00:00
i = * insptr + + ;
k = * ( insptr ) ;
2006-11-15 01:16:55 +00:00
j = 0 ;
2006-11-16 03:02:42 +00:00
if ( GetGameVarID ( i , g_i , g_p ) ! = GetGameVarID ( k , g_i , g_p ) )
2006-04-13 20:47:06 +00:00
j = 1 ;
2006-11-14 21:35:50 +00:00
parseifelse ( j ) ;
2006-04-13 20:47:06 +00:00
}
2006-11-16 03:02:42 +00:00
break ;
}
2006-11-13 23:12:47 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFVARAND :
2006-12-18 21:29:55 +00:00
insptr + + ;
j = * insptr + + ;
parseifelse ( GetGameVarID ( j , g_i , g_p ) & * insptr ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFVARG :
2006-12-18 21:29:55 +00:00
insptr + + ;
j = * insptr + + ;
parseifelse ( GetGameVarID ( j , g_i , g_p ) > * insptr ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-18 02:01:48 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFVARL :
2006-12-18 21:29:55 +00:00
insptr + + ;
j = * insptr + + ;
parseifelse ( GetGameVarID ( j , g_i , g_p ) < * insptr ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFPHEALTHL :
insptr + + ;
parseifelse ( sprite [ ps [ g_p ] . i ] . extra < * insptr ) ;
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFPINVENTORY :
{
insptr + + ;
j = 0 ;
switch ( * insptr + + )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
case GET_STEROIDS :
if ( ps [ g_p ] . steroids_amount ! = * insptr )
j = 1 ;
2006-11-13 23:12:47 +00:00
break ;
2006-11-16 03:02:42 +00:00
case GET_SHIELD :
if ( ps [ g_p ] . shield_amount ! = max_player_health )
j = 1 ;
2006-11-13 23:12:47 +00:00
break ;
2006-11-16 03:02:42 +00:00
case GET_SCUBA :
if ( ps [ g_p ] . scuba_amount ! = * insptr ) j = 1 ;
2006-04-13 20:47:06 +00:00
break ;
2006-11-16 03:02:42 +00:00
case GET_HOLODUKE :
if ( ps [ g_p ] . holoduke_amount ! = * insptr ) j = 1 ;
2006-11-15 01:16:55 +00:00
break ;
2006-11-16 03:02:42 +00:00
case GET_JETPACK :
if ( ps [ g_p ] . jetpack_amount ! = * insptr ) j = 1 ;
break ;
case GET_ACCESS :
switch ( g_sp - > pal )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
case 0 :
if ( ps [ g_p ] . got_access & 1 ) j = 1 ;
break ;
case 21 :
if ( ps [ g_p ] . got_access & 2 ) j = 1 ;
break ;
case 23 :
if ( ps [ g_p ] . got_access & 4 ) j = 1 ;
break ;
2006-11-15 01:16:55 +00:00
}
2006-11-16 03:02:42 +00:00
break ;
case GET_HEATS :
if ( ps [ g_p ] . heat_amount ! = * insptr ) j = 1 ;
break ;
case GET_FIRSTAID :
if ( ps [ g_p ] . firstaid_amount ! = * insptr ) j = 1 ;
break ;
case GET_BOOTS :
if ( ps [ g_p ] . boot_amount ! = * insptr ) j = 1 ;
2006-11-15 01:16:55 +00:00
break ;
}
2006-11-16 03:02:42 +00:00
parseifelse ( j ) ;
break ;
}
case CON_PSTOMP :
insptr + + ;
if ( ps [ g_p ] . knee_incs = = 0 & & sprite [ ps [ g_p ] . i ] . xrepeat > = 40 )
if ( cansee ( g_sp - > x , g_sp - > y , g_sp - > z - ( 4 < < 8 ) , g_sp - > sectnum , ps [ g_p ] . posx , ps [ g_p ] . posy , ps [ g_p ] . posz + ( 16 < < 8 ) , sprite [ ps [ g_p ] . i ] . sectnum ) )
{
2006-12-18 21:29:55 +00:00
for ( j = 0 ; j < MAXPLAYERS ; j + + )
2006-04-29 02:23:07 +00:00
{
2006-12-18 21:29:55 +00:00
if ( ps [ j ] . actorsqu = = g_i )
2006-11-16 03:02:42 +00:00
break ;
2006-04-29 02:23:07 +00:00
}
2006-12-18 21:29:55 +00:00
if ( j = = MAXPLAYERS )
2006-11-16 03:02:42 +00:00
{
ps [ g_p ] . knee_incs = 1 ;
if ( ps [ g_p ] . weapon_pos = = 0 )
ps [ g_p ] . weapon_pos = - 1 ;
ps [ g_p ] . actorsqu = g_i ;
}
}
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFAWAYFROMWALL :
{
2006-12-18 09:32:17 +00:00
short s1 = g_sp - > sectnum ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
j = 0 ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
updatesector ( g_sp - > x + 108 , g_sp - > y + 108 , & s1 ) ;
if ( s1 = = g_sp - > sectnum )
{
updatesector ( g_sp - > x - 108 , g_sp - > y - 108 , & s1 ) ;
2006-11-14 21:35:50 +00:00
if ( s1 = = g_sp - > sectnum )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
updatesector ( g_sp - > x + 108 , g_sp - > y - 108 , & s1 ) ;
2006-11-14 21:35:50 +00:00
if ( s1 = = g_sp - > sectnum )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
updatesector ( g_sp - > x - 108 , g_sp - > y + 108 , & s1 ) ;
2006-11-14 21:35:50 +00:00
if ( s1 = = g_sp - > sectnum )
2006-11-16 03:02:42 +00:00
j = 1 ;
2006-04-13 20:47:06 +00:00
}
}
2006-04-24 00:49:44 +00:00
}
2006-11-16 03:02:42 +00:00
parseifelse ( j ) ;
}
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_QUOTE :
insptr + + ;
if ( fta_quotes [ * insptr ] ! = NULL )
FTA ( * insptr + + , & ps [ g_p ] ) ;
else
{
OSD_Printf ( " %s %d null quote %d \n " , __FILE__ , __LINE__ , * insptr ) ;
2006-04-24 00:49:44 +00:00
insptr + + ;
2006-11-16 03:02:42 +00:00
}
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_USERQUOTE :
insptr + + ;
if ( fta_quotes [ * insptr ] ! = NULL )
adduserquote ( fta_quotes [ * insptr + + ] ) ;
else
{
OSD_Printf ( " %s %d null quote %d \n " , __FILE__ , __LINE__ , * insptr ) ;
2006-11-15 01:16:55 +00:00
insptr + + ;
2006-11-16 03:02:42 +00:00
}
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFINOUTERSPACE :
parseifelse ( floorspace ( g_sp - > sectnum ) ) ;
break ;
2006-04-18 03:11:38 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFNOTMOVING :
parseifelse ( ( hittype [ g_i ] . movflag & 49152 ) > 16384 ) ;
break ;
2006-11-15 01:16:55 +00:00
2006-11-16 03:02:42 +00:00
case CON_RESPAWNHITAG :
insptr + + ;
switch ( dynamictostatic [ g_sp - > picnum ] )
{
case FEM1__STATIC :
case FEM2__STATIC :
case FEM3__STATIC :
case FEM4__STATIC :
case FEM5__STATIC :
case FEM6__STATIC :
case FEM7__STATIC :
case FEM8__STATIC :
case FEM9__STATIC :
case FEM10__STATIC :
case PODFEM1__STATIC :
case NAKED1__STATIC :
case STATUE__STATIC :
if ( g_sp - > yvel ) operaterespawns ( g_sp - > yvel ) ;
2006-04-13 20:47:06 +00:00
break ;
2006-11-16 03:02:42 +00:00
default :
if ( g_sp - > hitag > = 0 ) operaterespawns ( g_sp - > hitag ) ;
2006-11-15 01:16:55 +00:00
break ;
2006-11-16 03:02:42 +00:00
}
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFSPRITEPAL :
insptr + + ;
parseifelse ( g_sp - > pal = = * insptr ) ;
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFANGDIFFL :
insptr + + ;
j = klabs ( getincangle ( ps [ g_p ] . ang , g_sp - > ang ) ) ;
parseifelse ( j < = * insptr ) ;
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_IFNOSOUNDS :
for ( j = 1 ; j < NUM_SOUNDS ; j + + )
if ( SoundOwner [ j ] [ 0 ] . i = = g_i )
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
parseifelse ( j = = NUM_SOUNDS ) ;
break ;
2006-04-13 20:47:06 +00:00
2006-11-16 03:02:42 +00:00
case CON_SPRITEFLAGS :
insptr + + ;
actorspriteflags [ g_i ] = GetGameVarID ( * insptr + + , g_i , g_p ) ;
break ;
2006-08-28 19:18:05 +00:00
2006-11-16 03:02:42 +00:00
case CON_GETCURRADDRESS :
insptr + + ;
2006-12-18 21:29:55 +00:00
j = * insptr + + ;
SetGameVarID ( j , ( long ) insptr , g_i , g_p ) ;
2006-11-16 03:02:42 +00:00
break ;
2006-08-28 19:18:05 +00:00
2006-11-16 03:02:42 +00:00
case CON_JUMP :
2006-12-18 21:29:55 +00:00
insptr + + ;
j = GetGameVarID ( * insptr + + , g_i , g_p ) ;
insptr = ( long * ) j ;
2006-11-16 03:02:42 +00:00
break ;
default :
2006-11-24 04:25:13 +00:00
OSD_Printf ( " fatal error: default processing: prev inst: %ld, curr inst: %ld, next inst: %ld \n current actor: %d (%d) \n " , * ( insptr - 1 ) , * insptr , * ( insptr + 1 ) , g_i , g_sp - > picnum ) ;
2006-11-16 03:02:42 +00:00
gameexit ( " An error has occurred in the EDuke32 CON executor. \n \n Please mail all of your CON files along with the file eduke32.log \n to terminx@gmail.com. \n \n Thank you. " ) ;
break ;
2006-04-13 20:47:06 +00:00
}
return 0 ;
}
2006-12-20 03:27:25 +00:00
void LoadActor ( long iActor )
2006-04-13 20:47:06 +00:00
{
2006-12-20 03:27:25 +00:00
g_i = iActor ; // Sprite ID
g_p = - 1 ; // iPlayer; // Player ID
2006-12-10 01:52:35 +00:00
g_x = - 1 ; // lDist; // ??
2006-04-13 20:47:06 +00:00
g_sp = & sprite [ g_i ] ; // Pointer to sprite structure
g_t = & hittype [ g_i ] . temp_data [ 0 ] ; // Sprite's 'extra' data
2006-11-14 21:35:50 +00:00
if ( actorLoadEventScrptr [ g_sp - > picnum ] = = 0 ) return ;
2006-04-13 20:47:06 +00:00
insptr = actorLoadEventScrptr [ g_sp - > picnum ] ;
killit_flag = 0 ;
2006-11-13 23:12:47 +00:00
if ( g_sp - > sectnum < 0 | | g_sp - > sectnum > = MAXSECTORS )
2006-04-13 20:47:06 +00:00
{
// if(badguy(g_sp))
// ps[g_p].actors_killed++;
deletesprite ( g_i ) ;
return ;
}
2006-12-20 03:27:25 +00:00
while ( 1 ) if ( parse ( ) ) break ;
2006-04-13 20:47:06 +00:00
2006-11-13 23:12:47 +00:00
if ( killit_flag = = 1 )
2006-04-13 20:47:06 +00:00
{
// if player was set to squish, first stop that...
2006-11-14 21:35:50 +00:00
if ( g_p > = 0 )
2006-04-13 20:47:06 +00:00
{
2006-11-13 23:12:47 +00:00
if ( ps [ g_p ] . actorsqu = = g_i )
2006-04-13 20:47:06 +00:00
ps [ g_p ] . actorsqu = - 1 ;
}
deletesprite ( g_i ) ;
}
}
2006-12-18 08:37:12 +00:00
void execute ( int iActor , int iPlayer , long lDist )
2006-04-13 20:47:06 +00:00
{
2006-12-18 08:37:12 +00:00
g_i = iActor ; // Sprite ID
g_p = iPlayer ; // Player ID
g_x = lDist ; // ??
2006-04-13 20:47:06 +00:00
g_sp = & sprite [ g_i ] ; // Pointer to sprite structure
g_t = & hittype [ g_i ] . temp_data [ 0 ] ; // Sprite's 'extra' data
2006-11-14 21:35:50 +00:00
if ( actorscrptr [ g_sp - > picnum ] = = 0 ) return ;
2006-04-13 20:47:06 +00:00
insptr = 4 + ( actorscrptr [ g_sp - > picnum ] ) ;
killit_flag = 0 ;
2006-11-13 23:12:47 +00:00
if ( g_sp - > sectnum < 0 | | g_sp - > sectnum > = MAXSECTORS )
2006-04-13 20:47:06 +00:00
{
2006-11-13 23:12:47 +00:00
if ( badguy ( g_sp ) )
2006-04-13 20:47:06 +00:00
ps [ g_p ] . actors_killed + + ;
deletesprite ( g_i ) ;
return ;
}
2006-11-13 23:12:47 +00:00
if ( g_t [ 4 ] )
2006-04-13 20:47:06 +00:00
{
g_sp - > lotag + = TICSPERFRAME ;
2006-11-14 21:35:50 +00:00
if ( g_sp - > lotag > * ( long * ) ( g_t [ 4 ] + 16 ) )
2006-04-13 20:47:06 +00:00
{
g_t [ 2 ] + + ;
g_sp - > lotag = 0 ;
2006-11-14 21:35:50 +00:00
g_t [ 3 ] + = * ( long * ) ( g_t [ 4 ] + 12 ) ;
2006-04-13 20:47:06 +00:00
}
2006-11-14 21:35:50 +00:00
if ( klabs ( g_t [ 3 ] ) > = klabs ( * ( long * ) ( g_t [ 4 ] + 4 ) * * ( long * ) ( g_t [ 4 ] + 12 ) ) )
2006-04-13 20:47:06 +00:00
g_t [ 3 ] = 0 ;
}
2006-12-20 03:27:25 +00:00
while ( 1 ) if ( parse ( ) ) break ;
2006-04-13 20:47:06 +00:00
2006-11-13 23:12:47 +00:00
if ( killit_flag = = 1 )
2006-04-13 20:47:06 +00:00
{
// if player was set to squish, first stop that...
2006-11-13 23:12:47 +00:00
if ( ps [ g_p ] . actorsqu = = g_i )
2006-04-13 20:47:06 +00:00
ps [ g_p ] . actorsqu = - 1 ;
deletesprite ( g_i ) ;
}
else
{
move ( ) ;
2006-11-14 21:35:50 +00:00
if ( g_sp - > statnum = = 1 )
2006-04-13 20:47:06 +00:00
{
2006-11-14 21:35:50 +00:00
if ( badguy ( g_sp ) )
2006-04-13 20:47:06 +00:00
{
2006-11-14 21:35:50 +00:00
if ( g_sp - > xrepeat > 60 ) return ;
if ( ud . respawn_monsters = = 1 & & g_sp - > extra < = 0 ) return ;
2006-04-13 20:47:06 +00:00
}
2006-11-14 21:35:50 +00:00
else if ( ud . respawn_items = = 1 & & ( g_sp - > cstat & 32768 ) ) return ;
2006-04-13 20:47:06 +00:00
2006-11-13 23:12:47 +00:00
if ( hittype [ g_i ] . timetosleep > 1 )
2006-04-13 20:47:06 +00:00
hittype [ g_i ] . timetosleep - - ;
2006-11-13 23:12:47 +00:00
else if ( hittype [ g_i ] . timetosleep = = 1 )
2006-04-13 20:47:06 +00:00
changespritestat ( g_i , 2 ) ;
}
2006-11-13 23:12:47 +00:00
else if ( g_sp - > statnum = = 6 )
switch ( dynamictostatic [ g_sp - > picnum ] )
2006-04-13 20:47:06 +00:00
{
2006-11-16 03:02:42 +00:00
case RUBBERCAN__STATIC :
case EXPLODINGBARREL__STATIC :
case WOODENHORSE__STATIC :
case HORSEONSIDE__STATIC :
case CANWITHSOMETHING__STATIC :
case FIREBARREL__STATIC :
case NUKEBARREL__STATIC :
case NUKEBARRELDENTED__STATIC :
case NUKEBARRELLEAKED__STATIC :
case TRIPBOMB__STATIC :
case EGG__STATIC :
if ( hittype [ g_i ] . timetosleep > 1 )
hittype [ g_i ] . timetosleep - - ;
else if ( hittype [ g_i ] . timetosleep = = 1 )
changespritestat ( g_i , 2 ) ;
break ;
2006-04-13 20:47:06 +00:00
}
}
}