Moved all these unsorted global cheat variables to a handy structure; Simplified reading of the cheats without trying to make it complicated so no one finds them (everyone can get the source); Removed one or two cheats which carry more garbage than they are worth; Added replacement for the bittersweet cheat; Made FPS Counter an option of Graphics menu
This commit is contained in:
parent
e9da5b85b4
commit
c1e4e9c3d7
|
@ -1,5 +1,9 @@
|
|||
D1X-Rebirth Changelog
|
||||
|
||||
20110214
|
||||
--------
|
||||
d1x.ini, include/args.h, main/ai.c, main/ai.h, main/automap.c, main/cntrlcen.c, main/collide.c, main/config.c, main/config.h, main/fvi.c, main/game.c, main/game.h, main/gamecntl.c, main/gamerend.c, main/gameseq.c, main/gameseq.h, main/gauges.c, main/inferno.c, main/kconfig.c, main/laser.c, main/menu.c, main/multi.c, main/net_ipx.c, main/net_udp.c, main/physics.c, main/player.h, main/render.c, main/state.c, main/titles.c, main/titles.h, misc/args.c: Moved all these unsorted global cheat variables to a handy structure; Simplified reading of the cheats without trying to make it complicated so no one finds them (everyone can get the source); Removed one or two cheats which carry more garbage than they are worth; Added replacement for the bittersweet cheat; Made FPS Counter an option of Graphics menu
|
||||
|
||||
20110212
|
||||
--------
|
||||
arch/inlcude/window.h, arch/sdl/event.c, arch/sdl/window.c, main/game.c: New approach to handle a bunch of closing windows - removed window_do_close() again, reworked game_leave_menus by checking window_get_front() and closing this window until it's Game_wind, while event_process checking if window still exists after drawing and if not, take next window from previous which should be updated by then
|
||||
|
|
3
d1x.ini
3
d1x.ini
|
@ -1,6 +1,5 @@
|
|||
System Options:
|
||||
|
||||
;-fps Enable FPS indicator by default
|
||||
;-nonicefps Don't free CPU-cycles
|
||||
;-maxfps <n> Set maximum framerate (1-200)
|
||||
;-hogdir <s> set shared data directory to <dir>
|
||||
|
@ -11,7 +10,7 @@
|
|||
;-autodemo Start in demo mode
|
||||
;-notitles Skip title screens
|
||||
;-window Run the game in a window
|
||||
;-noborders Do not show borders in window mode
|
||||
;-noborders Do not show borders in window mode
|
||||
|
||||
Controls:
|
||||
|
||||
|
|
|
@ -41,7 +41,6 @@ extern void args_exit();
|
|||
typedef struct Arg
|
||||
{
|
||||
int SysShowCmdHelp;
|
||||
int SysFPSIndicator;
|
||||
int SysUseNiceFPS;
|
||||
int SysMaxFPS;
|
||||
char *SysHogDir;
|
||||
|
|
211
main/ai.c
211
main/ai.c
|
@ -73,29 +73,16 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
|
|||
void init_boss_segments(short segptr[], int *num_segs, int size_check);
|
||||
void ai_multi_send_robot_position(int objnum, int force);
|
||||
|
||||
#define JOHN_CHEATS_SIZE_1 6
|
||||
#define JOHN_CHEATS_SIZE_2 6
|
||||
#define JOHN_CHEATS_SIZE_3 6
|
||||
|
||||
ubyte john_cheats_1[JOHN_CHEATS_SIZE_1] = { KEY_P ^ 0x00 ^ 0x34,
|
||||
KEY_O ^ 0x10 ^ 0x34,
|
||||
KEY_B ^ 0x20 ^ 0x34,
|
||||
KEY_O ^ 0x30 ^ 0x34,
|
||||
KEY_Y ^ 0x40 ^ 0x34,
|
||||
KEY_S ^ 0x50 ^ 0x34 };
|
||||
|
||||
#define PARALLAX 0 // If !0, then special debugging info for Parallax eyes only enabled.
|
||||
|
||||
#define MIN_D 0x100
|
||||
|
||||
int Flinch_scale = 4;
|
||||
int john_cheats_index_1; // POBOYS detonate reactor
|
||||
int Attack_scale = 24;
|
||||
#define ANIM_RATE (F1_0/16)
|
||||
#define DELTA_ANG_SCALE 16
|
||||
|
||||
sbyte Mike_to_matt_xlate[] = {AS_REST, AS_REST, AS_ALERT, AS_ALERT, AS_FLINCH, AS_FIRE, AS_RECOIL, AS_REST};
|
||||
int john_cheats_index_2; // PORGYS high speed weapon firing
|
||||
|
||||
// int No_ai_flag=0;
|
||||
|
||||
|
@ -118,8 +105,6 @@ int Num_boss_gate_segs;
|
|||
short Boss_gate_segs[MAX_BOSS_TELEPORT_SEGS];
|
||||
#endif
|
||||
|
||||
int john_cheats_index_3; // LUNACY lunacy (insane behavior, rookie firing)
|
||||
|
||||
// ---------- John: These variables must be saved as part of gamesave. ----------
|
||||
int Ai_initialized = 0;
|
||||
int Overall_agitation;
|
||||
|
@ -141,8 +126,6 @@ int Boss_been_hit=0;
|
|||
|
||||
|
||||
// ---------- John: End of variables which must be saved as part of gamesave. ----------
|
||||
|
||||
int john_cheats_index_4; // PLETCHnnn paint robots
|
||||
int ai_evaded=0;
|
||||
|
||||
#ifndef SHAREWARE
|
||||
|
@ -177,19 +160,6 @@ sbyte Super_boss_gate_list[] = {0, 1, 8, 9, 10, 11, 12, 15, 16, 18, 19, 20, 22,
|
|||
#endif
|
||||
|
||||
int Ai_info_enabled=0;
|
||||
int Robot_firing_enabled = 1;
|
||||
|
||||
extern int Ugly_robot_cheat, Ugly_robot_texture, Laser_rapid_fire;
|
||||
extern sbyte Enable_john_cheat_1, Enable_john_cheat_2, Enable_john_cheat_3, Enable_john_cheat_4;
|
||||
|
||||
ubyte john_cheats_3[2*JOHN_CHEATS_SIZE_3+1] = { KEY_Y ^ 0x67,
|
||||
KEY_E ^ 0x66,
|
||||
KEY_C ^ 0x65,
|
||||
KEY_A ^ 0x64,
|
||||
KEY_N ^ 0x63,
|
||||
KEY_U ^ 0x62,
|
||||
KEY_L ^ 0x61 };
|
||||
|
||||
|
||||
#define MAX_AWARENESS_EVENTS 64
|
||||
typedef struct awareness_event {
|
||||
|
@ -308,29 +278,6 @@ sbyte Ai_transition_table[AI_MAX_EVENT][AI_MAX_STATE][AI_MAX_STATE] = {
|
|||
}
|
||||
};
|
||||
|
||||
ubyte john_cheats_2[2*JOHN_CHEATS_SIZE_2] = { KEY_P ^ 0x00 ^ 0x43, 0x66,
|
||||
KEY_O ^ 0x10 ^ 0x43, 0x11,
|
||||
KEY_R ^ 0x20 ^ 0x43, 0x8,
|
||||
KEY_G ^ 0x30 ^ 0x43, 0x2,
|
||||
KEY_Y ^ 0x40 ^ 0x43, 0x0,
|
||||
KEY_S ^ 0x50 ^ 0x43 };
|
||||
|
||||
void john_cheat_func_1(int key)
|
||||
{
|
||||
if (!Cheats_enabled)
|
||||
return;
|
||||
|
||||
if (key == (john_cheats_1[john_cheats_index_1] ^ (john_cheats_index_1 << 4) ^ 0x34)) {
|
||||
john_cheats_index_1++;
|
||||
if (john_cheats_index_1 == JOHN_CHEATS_SIZE_1) {
|
||||
do_controlcen_destroyed_stuff(NULL);
|
||||
john_cheats_index_1 = 0;
|
||||
digi_play_sample( SOUND_CHEATER, F1_0);
|
||||
}
|
||||
} else
|
||||
john_cheats_index_1 = 0;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------------------------------------------
|
||||
// Given a behavior, set initial mode.
|
||||
int ai_behavior_to_mode(int behavior)
|
||||
|
@ -420,23 +367,6 @@ void init_ai_object(int objnum, int behavior, int hide_segment)
|
|||
aip->REMOTE_OWNER = -1;
|
||||
}
|
||||
|
||||
void john_cheat_func_2(int key)
|
||||
{
|
||||
if (!Cheats_enabled)
|
||||
return;
|
||||
|
||||
if (key == (john_cheats_2[2*john_cheats_index_2] ^ (john_cheats_index_2 << 4) ^ 0x43)) {
|
||||
john_cheats_index_2++;
|
||||
if (john_cheats_index_2 == JOHN_CHEATS_SIZE_2) {
|
||||
Laser_rapid_fire = 0xBADA55;
|
||||
do_megawow_powerup(200);
|
||||
john_cheats_index_2 = 0;
|
||||
digi_play_sample( SOUND_CHEATER, F1_0);
|
||||
}
|
||||
} else
|
||||
john_cheats_index_2 = 0;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------------------------------------------
|
||||
void init_ai_objects(void)
|
||||
{
|
||||
|
@ -467,69 +397,6 @@ void init_ai_objects(void)
|
|||
Ai_initialized = 1;
|
||||
}
|
||||
|
||||
int Lunacy = 0;
|
||||
int Diff_save = 1;
|
||||
|
||||
fix Firing_wait_copy[MAX_ROBOT_TYPES];
|
||||
sbyte Rapidfire_count_copy[MAX_ROBOT_TYPES];
|
||||
|
||||
void do_lunacy_on(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
if ( !Lunacy ) {
|
||||
Lunacy = 1;
|
||||
Diff_save = Difficulty_level;
|
||||
Difficulty_level = NDL-1;
|
||||
|
||||
for (i=0; i<MAX_ROBOT_TYPES; i++) {
|
||||
Firing_wait_copy[i] = Robot_info[i].firing_wait[NDL-1];
|
||||
Rapidfire_count_copy[i] = Robot_info[i].rapidfire_count[NDL-1];
|
||||
|
||||
Robot_info[i].firing_wait[NDL-1] = Robot_info[i].firing_wait[1];
|
||||
Robot_info[i].rapidfire_count[NDL-1] = Robot_info[i].rapidfire_count[1];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void do_lunacy_off(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
if ( Lunacy ) {
|
||||
Lunacy = 0;
|
||||
for (i=0; i<MAX_ROBOT_TYPES; i++) {
|
||||
Robot_info[i].firing_wait[NDL-1] = Firing_wait_copy[i];
|
||||
Robot_info[i].rapidfire_count[NDL-1] = Rapidfire_count_copy[i];
|
||||
}
|
||||
Difficulty_level = Diff_save;
|
||||
}
|
||||
}
|
||||
|
||||
void john_cheat_func_3(int key)
|
||||
{
|
||||
if (!Cheats_enabled)
|
||||
return;
|
||||
|
||||
if (key == (john_cheats_3[JOHN_CHEATS_SIZE_3 - john_cheats_index_3] ^ (0x61 + john_cheats_index_3))) {
|
||||
if (john_cheats_index_3 == 4)
|
||||
john_cheats_index_3++;
|
||||
john_cheats_index_3++;
|
||||
if (john_cheats_index_3 == JOHN_CHEATS_SIZE_3+1) {
|
||||
if (Lunacy) {
|
||||
do_lunacy_off();
|
||||
HUD_init_message(HM_DEFAULT, TXT_NO_LUNACY );
|
||||
} else {
|
||||
do_lunacy_on();
|
||||
HUD_init_message(HM_DEFAULT, TXT_LUNACY );
|
||||
digi_play_sample( SOUND_CHEATER, F1_0);
|
||||
}
|
||||
john_cheats_index_3 = 0;
|
||||
}
|
||||
} else
|
||||
john_cheats_index_3 = 0;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
// Do *dest = *delta unless:
|
||||
// *delta is pretty small
|
||||
|
@ -621,80 +488,6 @@ void ai_turn_randomly(vms_vector *vec_to_player, object *obj, fix rate, int prev
|
|||
// Increases distance to which robot will search to create path to player by Overall_agitation/8 segments.
|
||||
// Decreases wait between fire times by Overall_agitation/64 seconds.
|
||||
|
||||
void john_cheat_func_4(int key)
|
||||
{
|
||||
if (!Cheats_enabled)
|
||||
return;
|
||||
|
||||
switch (john_cheats_index_4) {
|
||||
case 3:
|
||||
if (key == KEY_T)
|
||||
john_cheats_index_4++;
|
||||
else
|
||||
john_cheats_index_4 = 0;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
if (key == KEY_L)
|
||||
john_cheats_index_4++;
|
||||
else
|
||||
john_cheats_index_4 = 0;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if (key == KEY_E)
|
||||
john_cheats_index_4++;
|
||||
else
|
||||
john_cheats_index_4 = 0;
|
||||
break;
|
||||
|
||||
case 0:
|
||||
if (key == KEY_P)
|
||||
john_cheats_index_4++;
|
||||
break;
|
||||
|
||||
|
||||
case 4:
|
||||
if (key == KEY_C)
|
||||
john_cheats_index_4++;
|
||||
else
|
||||
john_cheats_index_4 = 0;
|
||||
break;
|
||||
|
||||
case 5:
|
||||
if (key == KEY_H)
|
||||
john_cheats_index_4++;
|
||||
else
|
||||
john_cheats_index_4 = 0;
|
||||
break;
|
||||
|
||||
case 6:
|
||||
Ugly_robot_texture = 0;
|
||||
case 7:
|
||||
case 8:
|
||||
if ((key >= KEY_1) && (key <= KEY_0)) {
|
||||
john_cheats_index_4++;
|
||||
Ugly_robot_texture *= 10;
|
||||
if (key != KEY_0)
|
||||
Ugly_robot_texture += key - 1;
|
||||
if (john_cheats_index_4 == 9) {
|
||||
if (Ugly_robot_texture == 999) {
|
||||
Ugly_robot_cheat = 0;
|
||||
HUD_init_message(HM_DEFAULT, TXT_ROBOT_PAINTING_OFF );
|
||||
} else {
|
||||
HUD_init_message(HM_DEFAULT, TXT_ROBOT_PAINTING_ON, Ugly_robot_texture );
|
||||
Ugly_robot_cheat = 0xBADA55;
|
||||
}
|
||||
john_cheats_index_4 = 0;
|
||||
}
|
||||
} else
|
||||
john_cheats_index_4 = 0;
|
||||
|
||||
break;
|
||||
default:
|
||||
john_cheats_index_4 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------------------------------------------------
|
||||
// Returns:
|
||||
|
@ -963,7 +756,7 @@ void do_ai_robot_hit_attack(object *robot, object *player, vms_vector *collision
|
|||
robot_info *robptr = &Robot_info[robot->id];
|
||||
|
||||
//#ifndef NDEBUG
|
||||
if (!Robot_firing_enabled)
|
||||
if (cheats.robotfiringsuspended)
|
||||
return;
|
||||
//#endif
|
||||
|
||||
|
@ -998,7 +791,7 @@ void ai_fire_laser_at_player(object *obj, vms_vector *fire_point)
|
|||
vms_vector fire_vec;
|
||||
vms_vector bpp_diff;
|
||||
|
||||
if (!Robot_firing_enabled)
|
||||
if (cheats.robotfiringsuspended)
|
||||
return;
|
||||
|
||||
#ifndef NDEBUG
|
||||
|
|
|
@ -70,7 +70,6 @@ extern void create_n_segment_path_to_door(object *objp, int path_length, int avo
|
|||
extern void make_random_vector(vms_vector *vec);
|
||||
extern void init_robots_for_level(void);
|
||||
extern int ai_behavior_to_mode(int behavior);
|
||||
extern int Robot_firing_enabled;
|
||||
|
||||
// max_length is maximum depth of path to create.
|
||||
// If -1, use default: MAX_DEPTH_TO_SEARCH_FOR_PLAYER
|
||||
|
|
|
@ -434,13 +434,10 @@ int automap_key_command(window *wind, d_event *event, automap *am)
|
|||
return 1;
|
||||
|
||||
case KEY_ALTED+KEY_F: // Alt+F shows full map, if cheats enabled
|
||||
if (Cheats_enabled)
|
||||
if (cheats.enabled)
|
||||
{
|
||||
uint t;
|
||||
t = Players[Player_num].flags;
|
||||
Players[Player_num].flags |= PLAYER_FLAGS_MAP_ALL_CHEAT;
|
||||
cheats.fullautomap = !cheats.fullautomap;
|
||||
automap_build_edge_list(am);
|
||||
Players[Player_num].flags=t;
|
||||
}
|
||||
return 1;
|
||||
#ifndef NDEBUG
|
||||
|
@ -1052,10 +1049,6 @@ void automap_build_edge_list(automap *am)
|
|||
{
|
||||
int i,e1,e2,s;
|
||||
Edge_info * e;
|
||||
int automap_cheat = 0;
|
||||
|
||||
if ( Players[Player_num].flags & PLAYER_FLAGS_MAP_ALL_CHEAT )
|
||||
automap_cheat = 1; // Damn cheaters...
|
||||
|
||||
// clear edge list
|
||||
for (i=0; i<am->max_edges; i++) {
|
||||
|
@ -1065,7 +1058,7 @@ void automap_build_edge_list(automap *am)
|
|||
am->num_edges = 0;
|
||||
am->highest_edge_index = -1;
|
||||
|
||||
if (automap_cheat || (Players[Player_num].flags & PLAYER_FLAGS_MAP_ALL) ) {
|
||||
if (cheats.fullautomap || (Players[Player_num].flags & PLAYER_FLAGS_MAP_ALL) ) {
|
||||
// Cheating, add all edges as visited
|
||||
for (s=0; s<=Highest_segment_index; s++)
|
||||
#ifdef EDITOR
|
||||
|
|
|
@ -239,10 +239,10 @@ void do_controlcen_frame(object *obj)
|
|||
return;
|
||||
|
||||
#ifndef NDEBUG
|
||||
if (!Robot_firing_enabled || (Game_suspended & SUSP_ROBOTS))
|
||||
if (cheats.robotfiringsuspended || (Game_suspended & SUSP_ROBOTS))
|
||||
return;
|
||||
#else
|
||||
if (!Robot_firing_enabled)
|
||||
if (cheats.robotfiringsuspended)
|
||||
return;
|
||||
#endif
|
||||
|
||||
|
|
|
@ -77,9 +77,6 @@ static char rcsid[] = "$Id: collide.c,v 1.1.1.1 2006/03/17 19:41:32 zicodxx Exp
|
|||
#include "script.h"
|
||||
#endif
|
||||
|
||||
int Ugly_robot_cheat = 0;
|
||||
int Ugly_robot_texture = 0;
|
||||
|
||||
#define STANDARD_EXPL_DELAY (f1_0/4)
|
||||
|
||||
int check_collision_delayfunc_exec()
|
||||
|
@ -913,10 +910,6 @@ void collide_robot_and_weapon( object * robot, object * weapon, vms_vector *coll
|
|||
if (Robot_info[robot->id].boss_flag)
|
||||
Boss_hit_this_frame = 1;
|
||||
|
||||
if ( Ugly_robot_cheat == 0xBADa55 ) {
|
||||
robot->rtype.pobj_info.tmap_override = Ugly_robot_texture % NumTextures;
|
||||
}
|
||||
|
||||
#if 1
|
||||
/*
|
||||
* Check if persistent weapon already hit this object. If yes, abort.
|
||||
|
|
|
@ -62,6 +62,7 @@ static char *WindowModeStr="WindowMode";
|
|||
static char *TexFiltStr="TexFilt";
|
||||
static char *VSyncStr="VSync";
|
||||
static char *MultisampleStr="Multisample";
|
||||
static char *FPSIndicatorStr="FPSIndicator";
|
||||
static char *GrabinputStr="GrabInput";
|
||||
|
||||
int ReadConfigFile()
|
||||
|
@ -109,6 +110,7 @@ int ReadConfigFile()
|
|||
GameCfg.TexFilt = 0;
|
||||
GameCfg.VSync = 0;
|
||||
GameCfg.Multisample = 0;
|
||||
GameCfg.FPSIndicator = 0;
|
||||
GameCfg.Grabinput = 1;
|
||||
|
||||
infile = PHYSFSX_openReadBuffered("descent.cfg");
|
||||
|
@ -213,6 +215,8 @@ int ReadConfigFile()
|
|||
GameCfg.VSync = strtol(value, NULL, 10);
|
||||
else if (!strcmp(token, MultisampleStr))
|
||||
GameCfg.Multisample = strtol(value, NULL, 10);
|
||||
else if (!strcmp(token, FPSIndicatorStr))
|
||||
GameCfg.FPSIndicator = strtol(value, NULL, 10);
|
||||
else if (!strcmp(token, GrabinputStr))
|
||||
GameCfg.Grabinput = strtol(value, NULL, 10);
|
||||
}
|
||||
|
@ -266,6 +270,7 @@ int WriteConfigFile()
|
|||
PHYSFSX_printf(infile, "%s=%i\n", TexFiltStr, GameCfg.TexFilt);
|
||||
PHYSFSX_printf(infile, "%s=%i\n", VSyncStr, GameCfg.VSync);
|
||||
PHYSFSX_printf(infile, "%s=%i\n", MultisampleStr, GameCfg.Multisample);
|
||||
PHYSFSX_printf(infile, "%s=%i\n", FPSIndicatorStr, GameCfg.FPSIndicator);
|
||||
PHYSFSX_printf(infile, "%s=%i\n", GrabinputStr, GameCfg.Grabinput);
|
||||
|
||||
PHYSFS_close(infile);
|
||||
|
|
|
@ -46,6 +46,7 @@ typedef struct Cfg
|
|||
int TexFilt;
|
||||
int VSync;
|
||||
int Multisample;
|
||||
int FPSIndicator;
|
||||
int Grabinput;
|
||||
} __pack__ Cfg;
|
||||
|
||||
|
|
|
@ -33,8 +33,6 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
|
|||
#include "player.h"
|
||||
#include "fix.h"
|
||||
|
||||
extern int Physics_cheat_flag;
|
||||
|
||||
#define face_type_num(nfaces,face_num,tri_edge) ((nfaces==1)?0:(tri_edge*2 + face_num))
|
||||
|
||||
// keep the original ASM code here in case we need it again one day...
|
||||
|
@ -944,7 +942,7 @@ int fvi_sub(vms_vector *intp,int *ints,vms_vector *p0,int startseg,vms_vector *p
|
|||
|
||||
//if what we have hit is a door, check the adjoining seg
|
||||
|
||||
if ( (thisobjnum == Players[Player_num].objnum) && (Physics_cheat_flag==0xBADA55) ) {
|
||||
if ( (thisobjnum == Players[Player_num].objnum) && (cheats.ghostphysics) ) {
|
||||
wid_flag = WALL_IS_DOORWAY(seg, side);
|
||||
if (seg->children[side] >= 0 )
|
||||
wid_flag |= WID_FLY_FLAG;
|
||||
|
|
38
main/game.c
38
main/game.c
|
@ -140,7 +140,6 @@ char faded_in;
|
|||
int Game_suspended=0; //if non-zero, nothing moves but player
|
||||
fix64 Auto_fire_fusion_cannon_time = 0;
|
||||
fix Fusion_charge = 0;
|
||||
int Game_turbo_mode = 0;
|
||||
int Game_mode = GM_GAME_OVER;
|
||||
int Global_laser_firing_count = 0;
|
||||
int Global_missile_firing_count = 0;
|
||||
|
@ -157,6 +156,10 @@ void game_init_render_sub_buffers(int x, int y, int w, int h);
|
|||
extern void multi_check_for_killgoal_winner();
|
||||
|
||||
extern int ReadControls(d_event *event); // located in gamecntl.c
|
||||
|
||||
// Cheats
|
||||
game_cheats cheats;
|
||||
|
||||
// ==============================================================================================
|
||||
|
||||
//this is called once per game
|
||||
|
@ -454,7 +457,7 @@ void calc_frame_time()
|
|||
FrameTime = timer_value - last_timer_value;
|
||||
}
|
||||
|
||||
if ( Game_turbo_mode )
|
||||
if ( cheats.turbo )
|
||||
FrameTime *= 2;
|
||||
|
||||
last_timer_value = timer_value;
|
||||
|
@ -911,33 +914,9 @@ void reset_rear_view(void)
|
|||
|
||||
int Config_menu_flag;
|
||||
|
||||
extern int Laser_rapid_fire, Ugly_robot_cheat;
|
||||
extern void do_lunacy_on(), do_lunacy_off();
|
||||
extern int Physics_cheat_flag;
|
||||
|
||||
extern int cheat_enable_index;
|
||||
extern int cheat_wowie_index;
|
||||
extern int cheat_allkeys_index;
|
||||
extern int cheat_invuln_index;
|
||||
extern int cheat_cloak_index;
|
||||
extern int cheat_shield_index;
|
||||
extern int cheat_warp_index;
|
||||
extern int cheat_astral_index;
|
||||
extern int cheat_poboys_index;
|
||||
extern int cheat_turbomode_index;
|
||||
extern int cheat_wowie2_index;
|
||||
extern int cheat_newlife_index;
|
||||
extern int cheat_exitpath_index;
|
||||
extern int cheat_robotpause_index;
|
||||
|
||||
void game_disable_cheats()
|
||||
{
|
||||
Game_turbo_mode = 0;
|
||||
Cheats_enabled=0;
|
||||
do_lunacy_off();
|
||||
Laser_rapid_fire = 0;
|
||||
Ugly_robot_cheat = 0;
|
||||
Physics_cheat_flag = 0;
|
||||
memset(&cheats, 0, sizeof(cheats));
|
||||
}
|
||||
|
||||
// game_setup()
|
||||
|
@ -952,14 +931,9 @@ window *game_setup(void)
|
|||
#ifdef EDITOR
|
||||
keyd_editor_mode = 0;
|
||||
#endif
|
||||
do_lunacy_on(); // Copy values for insane into copy buffer in ai.c
|
||||
do_lunacy_off(); // Restore true insane mode.
|
||||
PlayerCfg.CockpitMode[1] = PlayerCfg.CockpitMode[0];
|
||||
last_drawn_cockpit = -1; // Force cockpit to redraw next time a frame renders.
|
||||
Endlevel_sequence = 0;
|
||||
cheat_enable_index = 0;
|
||||
|
||||
cheat_wowie_index = cheat_allkeys_index = cheat_invuln_index = cheat_cloak_index = cheat_shield_index = cheat_warp_index = cheat_astral_index = cheat_poboys_index = cheat_turbomode_index = cheat_wowie2_index = 0;
|
||||
|
||||
game_wind = window_create(&grd_curscreen->sc_canvas, 0, 0, SWIDTH, SHEIGHT, game_handler, NULL);
|
||||
if (!game_wind)
|
||||
|
|
28
main/game.h
28
main/game.h
|
@ -44,7 +44,6 @@ extern fix64 Last_laser_fired_time;
|
|||
extern fix64 Next_missile_fire_time; // Time at which player can next fire his selected missile.
|
||||
extern fix64 Next_flare_fire_time;
|
||||
extern fix Laser_delay_time; // Delay between laser fires.
|
||||
extern int Cheats_enabled;
|
||||
|
||||
// bits for FixedStep
|
||||
#define EPS4 1
|
||||
|
@ -186,8 +185,6 @@ void show_boxed_message(char *msg, int RenderFlag);
|
|||
// turns off rear view & rear view cockpit
|
||||
void reset_rear_view(void);
|
||||
|
||||
extern int Game_turbo_mode;
|
||||
|
||||
#define VR_NONE 0 //viewing the game screen
|
||||
#define VR_AREA_DET 1 //viewing with the stereo area determined method
|
||||
#define VR_INTERLACED 2 //viewing with the stereo interlaced method
|
||||
|
@ -206,5 +203,30 @@ void game_init_render_buffers (int render_max_w, int render_max_h, int render_me
|
|||
void game_render_frame_mono(int flip);
|
||||
void game_leave_menus(void);
|
||||
|
||||
// Cheats
|
||||
typedef struct game_cheats
|
||||
{
|
||||
int enabled;
|
||||
int wowie;
|
||||
int wowie2;
|
||||
int allkeys;
|
||||
int invul;
|
||||
int cloak;
|
||||
int shields;
|
||||
int extralife;
|
||||
int killreactor;
|
||||
int exitpath;
|
||||
int levelwarp;
|
||||
int fullautomap;
|
||||
int ghostphysics;
|
||||
int rapidfire;
|
||||
int turbo;
|
||||
int robotfiringsuspended;
|
||||
int baldguy;
|
||||
int acid;
|
||||
} __pack__ game_cheats;
|
||||
extern game_cheats cheats;
|
||||
void game_disable_cheats();
|
||||
|
||||
#endif
|
||||
|
||||
|
|
517
main/gamecntl.c
517
main/gamecntl.c
|
@ -113,8 +113,6 @@ extern int Global_missile_firing_count;
|
|||
|
||||
extern int *Toggle_var;
|
||||
|
||||
extern int Physics_cheat_flag;
|
||||
|
||||
extern fix Show_view_text_timer;
|
||||
|
||||
// Function prototypes --------------------------------------------------------
|
||||
|
@ -131,7 +129,7 @@ extern void newdemo_strip_frames(char *, int);
|
|||
extern void toggle_cockpit(void);
|
||||
extern void dump_used_textures_all();
|
||||
|
||||
void FinalCheats(int key);
|
||||
int FinalCheats(int key);
|
||||
|
||||
#ifndef RELEASE
|
||||
void do_cheat_menu(void);
|
||||
|
@ -819,7 +817,7 @@ int HandleTestKey(int key)
|
|||
|
||||
|
||||
case KEY_DEBUGGED+KEY_R:
|
||||
Robot_firing_enabled = !Robot_firing_enabled;
|
||||
cheats.robotfiringsuspended = !cheats.robotfiringsuspended;
|
||||
break;
|
||||
|
||||
#ifdef EDITOR //editor-specific functions
|
||||
|
@ -884,10 +882,6 @@ int HandleTestKey(int key)
|
|||
do_megawow_powerup(200);
|
||||
break;
|
||||
}
|
||||
case KEY_DEBUGGED+KEY_F:
|
||||
KEY_MAC(case KEY_COMMAND+KEY_F:)
|
||||
GameArg.SysFPSIndicator = !GameArg.SysFPSIndicator;
|
||||
break;
|
||||
|
||||
case KEY_DEBUGGED+KEY_SPACEBAR: //KEY_F7: // Toggle physics flying
|
||||
slew_stop();
|
||||
|
@ -951,323 +945,207 @@ int HandleTestKey(int key)
|
|||
#endif //#ifndef RELEASE
|
||||
|
||||
// Cheat functions ------------------------------------------------------------
|
||||
sbyte Enable_john_cheat_1, Enable_john_cheat_2, Enable_john_cheat_3, Enable_john_cheat_4;
|
||||
int cheat_enable_index;
|
||||
#define CHEAT_ENABLE_LENGTH (sizeof(cheat_enable_keys) / sizeof(*cheat_enable_keys))
|
||||
ubyte cheat_enable_keys[] = {KEY_G,KEY_A,KEY_B,KEY_B,KEY_A,KEY_G,KEY_A,KEY_B,KEY_B,KEY_A,KEY_H,KEY_E,KEY_Y};
|
||||
ubyte cheat_wowie[] = {KEY_S,KEY_C,KEY_O,KEY_U,KEY_R,KEY_G,KEY_E};
|
||||
ubyte cheat_allkeys[] = {KEY_M,KEY_I,KEY_T,KEY_Z,KEY_I};
|
||||
ubyte cheat_invuln[] = {KEY_R,KEY_A,KEY_C,KEY_E,KEY_R,KEY_X};
|
||||
ubyte cheat_cloak[] = {KEY_G,KEY_U,KEY_I,KEY_L,KEY_E};
|
||||
ubyte cheat_shield[] = {KEY_T,KEY_W,KEY_I,KEY_L,KEY_I,KEY_G,KEY_H,KEY_T};
|
||||
ubyte cheat_warp[] = {KEY_F,KEY_A,KEY_R,KEY_M,KEY_E,KEY_R,KEY_J,KEY_O,KEY_E};
|
||||
ubyte cheat_astral[] = {KEY_A,KEY_S,KEY_T,KEY_R,KEY_A,KEY_L};
|
||||
ubyte cheat_poboys[] = {KEY_P,KEY_O,KEY_B,KEY_O,KEY_Y,KEY_S};
|
||||
#define CHEAT_MAX_LEN 15
|
||||
#define NUM_CHEATS 16
|
||||
|
||||
#define NUM_NEW_CHEATS 5
|
||||
ubyte new_cheats[]= { KEY_B^0xaa, KEY_B^0xaa, KEY_B^0xaa, KEY_F^0xaa, KEY_A^0xaa,
|
||||
KEY_U^0xaa, KEY_I^0xaa, KEY_R^0xaa, KEY_L^0xaa, KEY_H^0xaa,
|
||||
KEY_G^0xaa, KEY_G^0xaa, KEY_U^0xaa, KEY_A^0xaa, KEY_I^0xaa,
|
||||
KEY_G^0xaa, KEY_R^0xaa, KEY_I^0xaa, KEY_S^0xaa, KEY_M^0xaa,
|
||||
KEY_I^0xaa, KEY_E^0xaa, KEY_N^0xaa, KEY_H^0xaa, KEY_S^0xaa,
|
||||
KEY_N^0xaa, KEY_D^0xaa, KEY_X^0xaa, KEY_X^0xaa, KEY_A^0xaa };
|
||||
|
||||
#define CHEAT_WOWIE_LENGTH (sizeof(cheat_wowie) / sizeof(*cheat_wowie))
|
||||
#define CHEAT_ALLKEYS_LENGTH (sizeof(cheat_allkeys) / sizeof(*cheat_allkeys))
|
||||
#define CHEAT_INVULN_LENGTH (sizeof(cheat_invuln) / sizeof(*cheat_invuln))
|
||||
#define CHEAT_CLOAK_LENGTH (sizeof(cheat_cloak) / sizeof(*cheat_cloak))
|
||||
#define CHEAT_SHIELD_LENGTH (sizeof(cheat_shield) / sizeof(*cheat_shield))
|
||||
#define CHEAT_WARP_LENGTH (sizeof(cheat_warp) / sizeof(*cheat_warp))
|
||||
#define CHEAT_ASTRAL_LENGTH (sizeof(cheat_astral) / sizeof(*cheat_astral))
|
||||
#define CHEAT_POBOYS_LENGTH (sizeof(cheat_poboys) / sizeof(*cheat_poboys))
|
||||
|
||||
#define CHEAT_TURBOMODE_OFS 0
|
||||
#define CHEAT_WOWIE2_OFS 1
|
||||
#define CHEAT_NEWLIFE_OFS 2
|
||||
#define CHEAT_EXITPATH_OFS 3
|
||||
#define CHEAT_ROBOTPAUSE_OFS 4
|
||||
#define CHEAT_TURBOMODE_LENGTH 6
|
||||
#define CHEAT_WOWIE2_LENGTH 6
|
||||
#define CHEAT_NEWLIFE_LENGTH 5
|
||||
#define CHEAT_EXITPATH_LENGTH 5
|
||||
#define CHEAT_ROBOTPAUSE_LENGTH 6
|
||||
|
||||
int cheat_wowie_index;
|
||||
int cheat_allkeys_index;
|
||||
int cheat_invuln_index;
|
||||
int cheat_cloak_index;
|
||||
int cheat_shield_index;
|
||||
int cheat_warp_index;
|
||||
int cheat_astral_index;
|
||||
int cheat_poboys_index;
|
||||
int cheat_turbomode_index;
|
||||
int cheat_wowie2_index;
|
||||
int cheat_newlife_index;
|
||||
int cheat_exitpath_index;
|
||||
int cheat_robotpause_index;
|
||||
|
||||
// Frametime "cheat" code stuff
|
||||
|
||||
#define IMPLEMENT_CHEAT(name, action) if (key == cheat_ ## name [cheat_ ## name ## _index]) {\
|
||||
if (++cheat_ ## name ## _index == (sizeof(cheat_ ## name)/sizeof(*cheat_ ## name))) {\
|
||||
action;\
|
||||
cheat_ ## name ## _index = 0;\
|
||||
}\
|
||||
} else cheat_ ## name ## _index = 0;\
|
||||
|
||||
//DEFINE_CHEAT needs to be done this weird way since stupid c macros can't (portably) handle multiple args, nor can they realize that within {}'s should all be the same arg. blah.
|
||||
#define DEFINE_CHEAT(name) int cheat_ ## name ## _index;\
|
||||
ubyte cheat_ ## name []
|
||||
|
||||
int Cheats_enabled=0;
|
||||
|
||||
extern int Laser_rapid_fire, Ugly_robot_cheat;
|
||||
extern void do_lunacy_on(), do_lunacy_off();
|
||||
extern int Physics_cheat_flag;
|
||||
|
||||
extern void john_cheat_func_1(int);
|
||||
extern void john_cheat_func_2(int);
|
||||
extern void john_cheat_func_3(int);
|
||||
extern void john_cheat_func_4(int);
|
||||
|
||||
void FinalCheats(int key)
|
||||
typedef struct cheat_code
|
||||
{
|
||||
if (key == 0) return;
|
||||
char *string;
|
||||
int *stateptr;
|
||||
} __pack__ cheat_code;
|
||||
|
||||
if (!(Game_mode&GM_MULTI) && key == cheat_enable_keys[cheat_enable_index]) {
|
||||
if (++cheat_enable_index == CHEAT_ENABLE_LENGTH) {
|
||||
HUD_init_message(HM_DEFAULT, TXT_CHEATS_ENABLED);
|
||||
digi_play_sample( SOUND_CHEATER, F1_0);
|
||||
Cheats_enabled = 1;
|
||||
Players[Player_num].score = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
cheat_enable_index = 0;
|
||||
cheat_code cheat_codes[NUM_CHEATS] = {
|
||||
{ "gabbagabbahey", &cheats.enabled },
|
||||
{ "scourge", &cheats.wowie },
|
||||
{ "bigred", &cheats.wowie2 },
|
||||
{ "mitzi", &cheats.allkeys },
|
||||
{ "racerx", &cheats.invul },
|
||||
{ "guile", &cheats.cloak },
|
||||
{ "twilight", &cheats.shields },
|
||||
{ "poboys", &cheats.killreactor },
|
||||
{ "flash", &cheats.exitpath },
|
||||
{ "farmerjoe", &cheats.levelwarp },
|
||||
{ "bruin", &cheats.extralife },
|
||||
{ "astral", &cheats.ghostphysics },
|
||||
{ "porgys", &cheats.rapidfire },
|
||||
{ "buggin", &cheats.turbo },
|
||||
{ "ahimsa", &cheats.robotfiringsuspended },
|
||||
{ "bittersweet", &cheats.acid },
|
||||
};
|
||||
|
||||
if (Cheats_enabled)
|
||||
int FinalCheats(int key)
|
||||
{
|
||||
static char cheat_buffer[CHEAT_MAX_LEN] = "AAAAAAAAAAAAAAA";
|
||||
int i = 0, gotcha = 0;
|
||||
|
||||
if (Game_mode & GM_MULTI)
|
||||
return 0;
|
||||
|
||||
for (i = 1; i < CHEAT_MAX_LEN; i++)
|
||||
cheat_buffer[i-1] = cheat_buffer[i];
|
||||
cheat_buffer[CHEAT_MAX_LEN-1] = key_ascii();
|
||||
for (i = 0; i < NUM_CHEATS; i++)
|
||||
{
|
||||
john_cheat_func_2(key);
|
||||
|
||||
if (!(Game_mode&GM_MULTI) && key == cheat_wowie[cheat_wowie_index]) {
|
||||
if (++cheat_wowie_index == CHEAT_WOWIE_LENGTH) {
|
||||
int i;
|
||||
|
||||
HUD_init_message(HM_DEFAULT, TXT_WOWIE_ZOWIE);
|
||||
digi_play_sample( SOUND_CHEATER, F1_0);
|
||||
|
||||
Players[Player_num].primary_weapon_flags |= 0xff ^ (HAS_PLASMA_FLAG | HAS_FUSION_FLAG);
|
||||
Players[Player_num].secondary_weapon_flags |= 0xff ^ (HAS_SMART_FLAG | HAS_MEGA_FLAG);
|
||||
|
||||
for (i=0; i<3; i++)
|
||||
Players[Player_num].primary_ammo[i] = Primary_ammo_max[i];
|
||||
|
||||
for (i=0; i<3; i++)
|
||||
Players[Player_num].secondary_ammo[i] = Secondary_ammo_max[i];
|
||||
|
||||
if (Newdemo_state == ND_STATE_RECORDING)
|
||||
newdemo_record_laser_level(Players[Player_num].laser_level, MAX_LASER_LEVEL);
|
||||
|
||||
Players[Player_num].energy = MAX_ENERGY;
|
||||
Players[Player_num].laser_level = MAX_LASER_LEVEL;
|
||||
Players[Player_num].flags |= PLAYER_FLAGS_QUAD_LASERS;
|
||||
update_laser_weapon_info();
|
||||
|
||||
cheat_wowie_index = 0;
|
||||
}
|
||||
int cheatlen = strlen(cheat_codes[i].string);
|
||||
Assert(cheatlen <= CHEAT_MAX_LEN);
|
||||
if (strnicmp(cheat_codes[i].string, cheat_buffer+CHEAT_MAX_LEN-cheatlen, cheatlen)==0)
|
||||
{
|
||||
if (!cheats.enabled && *cheat_codes[i].stateptr != cheats.enabled)
|
||||
break;
|
||||
if (!cheats.enabled)
|
||||
HUD_init_message(HM_DEFAULT, TXT_CHEATS_ENABLED);
|
||||
*cheat_codes[i].stateptr = !*cheat_codes[i].stateptr;
|
||||
cheats.enabled = 1;
|
||||
digi_play_sample( SOUND_CHEATER, F1_0);
|
||||
Players[Player_num].score = 0;
|
||||
gotcha = i;
|
||||
break;
|
||||
}
|
||||
else
|
||||
cheat_wowie_index = 0;
|
||||
|
||||
if (!(Game_mode&GM_MULTI) && key == (0xaa^new_cheats[cheat_wowie2_index*NUM_NEW_CHEATS+CHEAT_WOWIE2_OFS])) {
|
||||
if (++cheat_wowie2_index == CHEAT_WOWIE2_LENGTH) {
|
||||
int i;
|
||||
|
||||
HUD_init_message(HM_DEFAULT, "SUPER %s",TXT_WOWIE_ZOWIE);
|
||||
digi_play_sample( SOUND_CHEATER, F1_0);
|
||||
|
||||
Players[Player_num].primary_weapon_flags = 0xff;
|
||||
Players[Player_num].secondary_weapon_flags = 0xff;
|
||||
|
||||
for (i=0; i<MAX_PRIMARY_WEAPONS; i++)
|
||||
Players[Player_num].primary_ammo[i] = Primary_ammo_max[i];
|
||||
|
||||
for (i=0; i<MAX_SECONDARY_WEAPONS; i++)
|
||||
Players[Player_num].secondary_ammo[i] = Secondary_ammo_max[i];
|
||||
|
||||
if (Newdemo_state == ND_STATE_RECORDING)
|
||||
newdemo_record_laser_level(Players[Player_num].laser_level, MAX_LASER_LEVEL);
|
||||
|
||||
Players[Player_num].energy = MAX_ENERGY;
|
||||
Players[Player_num].laser_level = MAX_LASER_LEVEL;
|
||||
Players[Player_num].flags |= PLAYER_FLAGS_QUAD_LASERS;
|
||||
update_laser_weapon_info();
|
||||
|
||||
cheat_wowie2_index = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
cheat_wowie2_index = 0;
|
||||
|
||||
if (!(Game_mode&GM_MULTI) && key == cheat_allkeys[cheat_allkeys_index]) {
|
||||
if (++cheat_allkeys_index == CHEAT_ALLKEYS_LENGTH) {
|
||||
HUD_init_message(HM_DEFAULT, TXT_ALL_KEYS);
|
||||
digi_play_sample( SOUND_CHEATER, F1_0);
|
||||
Players[Player_num].flags |= PLAYER_FLAGS_BLUE_KEY | PLAYER_FLAGS_RED_KEY | PLAYER_FLAGS_GOLD_KEY;
|
||||
|
||||
cheat_allkeys_index = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
cheat_allkeys_index = 0;
|
||||
|
||||
|
||||
if (!(Game_mode&GM_MULTI) && key == cheat_invuln[cheat_invuln_index]) {
|
||||
if (++cheat_invuln_index == CHEAT_INVULN_LENGTH) {
|
||||
Players[Player_num].flags ^= PLAYER_FLAGS_INVULNERABLE;
|
||||
HUD_init_message(HM_DEFAULT, "%s %s!", TXT_INVULNERABILITY, (Players[Player_num].flags&PLAYER_FLAGS_INVULNERABLE)?TXT_ON:TXT_OFF);
|
||||
digi_play_sample( SOUND_CHEATER, F1_0);
|
||||
Players[Player_num].invulnerable_time = GameTime64+i2f(1000);
|
||||
|
||||
cheat_invuln_index = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
cheat_invuln_index = 0;
|
||||
|
||||
if (!(Game_mode&GM_MULTI) && key == cheat_cloak[cheat_cloak_index]) {
|
||||
if (++cheat_cloak_index == CHEAT_CLOAK_LENGTH) {
|
||||
Players[Player_num].flags ^= PLAYER_FLAGS_CLOAKED;
|
||||
HUD_init_message(HM_DEFAULT, "%s %s!", TXT_CLOAK, (Players[Player_num].flags&PLAYER_FLAGS_CLOAKED)?TXT_ON:TXT_OFF);
|
||||
digi_play_sample( SOUND_CHEATER, F1_0);
|
||||
if (Players[Player_num].flags & PLAYER_FLAGS_CLOAKED) {
|
||||
ai_do_cloak_stuff();
|
||||
Players[Player_num].cloak_time = GameTime64;
|
||||
}
|
||||
|
||||
cheat_cloak_index = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
cheat_cloak_index = 0;
|
||||
|
||||
if (!(Game_mode&GM_MULTI) && key == cheat_shield[cheat_shield_index]) {
|
||||
if (++cheat_shield_index == CHEAT_SHIELD_LENGTH) {
|
||||
HUD_init_message(HM_DEFAULT, TXT_FULL_SHIELDS);
|
||||
digi_play_sample( SOUND_CHEATER, F1_0);
|
||||
Players[Player_num].shields = MAX_SHIELDS;
|
||||
|
||||
cheat_shield_index = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
cheat_shield_index = 0;
|
||||
|
||||
if (!(Game_mode&GM_MULTI) && key == cheat_warp[cheat_warp_index]) {
|
||||
if (++cheat_warp_index == CHEAT_WARP_LENGTH) {
|
||||
newmenu_item m;
|
||||
char text[10]="";
|
||||
int new_level_num;
|
||||
int item;
|
||||
digi_play_sample( SOUND_CHEATER, F1_0);
|
||||
m.type=NM_TYPE_INPUT; m.text_len = 10; m.text = text;
|
||||
item = newmenu_do( NULL, TXT_WARP_TO_LEVEL, 1, &m, NULL, NULL );
|
||||
if (item != -1) {
|
||||
new_level_num = atoi(m.text);
|
||||
if (new_level_num!=0 && new_level_num>=0 && new_level_num<=Last_level)
|
||||
{
|
||||
window_set_visible(Game_wind, 0);
|
||||
StartNewLevel(new_level_num);
|
||||
window_set_visible(Game_wind, 1);
|
||||
}
|
||||
}
|
||||
|
||||
cheat_warp_index = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
cheat_warp_index = 0;
|
||||
|
||||
if (!(Game_mode&GM_MULTI) && key == cheat_astral[cheat_astral_index]) {
|
||||
if (++cheat_astral_index == CHEAT_ASTRAL_LENGTH) {
|
||||
digi_play_sample( SOUND_CHEATER, F1_0);
|
||||
if ( Physics_cheat_flag==0xBADA55 ) {
|
||||
Physics_cheat_flag = 0;
|
||||
} else {
|
||||
Physics_cheat_flag = 0xBADA55;
|
||||
}
|
||||
HUD_init_message(HM_DEFAULT, "%s %s!", "Ghosty mode", Physics_cheat_flag==0xBADA55?TXT_ON:TXT_OFF);
|
||||
cheat_astral_index = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
cheat_astral_index = 0;
|
||||
|
||||
if (!(Game_mode&GM_MULTI) && key == cheat_poboys[cheat_poboys_index]) {
|
||||
if (++cheat_poboys_index == CHEAT_POBOYS_LENGTH) {
|
||||
digi_play_sample( SOUND_CHEATER, F1_0);
|
||||
kill_and_so_forth();
|
||||
cheat_poboys_index = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
cheat_poboys_index = 0;
|
||||
|
||||
if (!(Game_mode&GM_MULTI) && key == (0xaa^new_cheats[cheat_turbomode_index*NUM_NEW_CHEATS+CHEAT_TURBOMODE_OFS])) {
|
||||
if (++cheat_turbomode_index == CHEAT_TURBOMODE_LENGTH) {
|
||||
Game_turbo_mode ^= 1;
|
||||
HUD_init_message(HM_DEFAULT, "%s %s!", "Turbo mode", Game_turbo_mode?TXT_ON:TXT_OFF);
|
||||
digi_play_sample( SOUND_CHEATER, F1_0);
|
||||
}
|
||||
}
|
||||
else
|
||||
cheat_turbomode_index = 0;
|
||||
|
||||
if (!(Game_mode&GM_MULTI) && key == (0xaa^new_cheats[cheat_newlife_index*NUM_NEW_CHEATS+CHEAT_NEWLIFE_OFS])) {
|
||||
if (++cheat_newlife_index == CHEAT_NEWLIFE_LENGTH) {
|
||||
if (Players[Player_num].lives<50) {
|
||||
Players[Player_num].lives++;
|
||||
HUD_init_message(HM_DEFAULT, "Extra life!");
|
||||
digi_play_sample( SOUND_CHEATER, F1_0);
|
||||
}
|
||||
|
||||
cheat_newlife_index = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
cheat_newlife_index = 0;
|
||||
|
||||
if (!(Game_mode&GM_MULTI) && key == (0xaa^new_cheats[cheat_exitpath_index*NUM_NEW_CHEATS+CHEAT_EXITPATH_OFS])) {
|
||||
if (++cheat_exitpath_index == CHEAT_EXITPATH_LENGTH) {
|
||||
#ifdef SHOW_EXIT_PATH
|
||||
if (create_special_path()) {
|
||||
HUD_init_message(HM_DEFAULT, "Exit path illuminated!");
|
||||
digi_play_sample( SOUND_CHEATER, F1_0);
|
||||
}
|
||||
#endif
|
||||
cheat_exitpath_index = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
cheat_exitpath_index = 0;
|
||||
|
||||
if (!(Game_mode&GM_MULTI) && key == (0xaa^new_cheats[cheat_robotpause_index*NUM_NEW_CHEATS+CHEAT_ROBOTPAUSE_OFS])) {
|
||||
if (++cheat_robotpause_index == CHEAT_ROBOTPAUSE_LENGTH) {
|
||||
Robot_firing_enabled = !Robot_firing_enabled;
|
||||
HUD_init_message(HM_DEFAULT, "%s %s!", "Robot firing", Robot_firing_enabled?TXT_ON:TXT_OFF);
|
||||
digi_play_sample( SOUND_CHEATER, F1_0);
|
||||
|
||||
cheat_robotpause_index = 0;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
cheat_robotpause_index = 0;
|
||||
|
||||
john_cheat_func_3(key);
|
||||
john_cheat_func_4(key);
|
||||
bald_guy_cheat(key);
|
||||
}
|
||||
|
||||
if (!gotcha)
|
||||
return 0;
|
||||
|
||||
if (cheat_codes[gotcha].stateptr == &cheats.wowie)
|
||||
{
|
||||
HUD_init_message(HM_DEFAULT, TXT_WOWIE_ZOWIE);
|
||||
|
||||
Players[Player_num].primary_weapon_flags |= 0xff ^ (HAS_PLASMA_FLAG | HAS_FUSION_FLAG);
|
||||
Players[Player_num].secondary_weapon_flags |= 0xff ^ (HAS_SMART_FLAG | HAS_MEGA_FLAG);
|
||||
|
||||
for (i=0; i<3; i++)
|
||||
Players[Player_num].primary_ammo[i] = Primary_ammo_max[i];
|
||||
for (i=0; i<3; i++)
|
||||
Players[Player_num].secondary_ammo[i] = Secondary_ammo_max[i];
|
||||
|
||||
if (Newdemo_state == ND_STATE_RECORDING)
|
||||
newdemo_record_laser_level(Players[Player_num].laser_level, MAX_LASER_LEVEL);
|
||||
|
||||
Players[Player_num].energy = MAX_ENERGY;
|
||||
Players[Player_num].laser_level = MAX_LASER_LEVEL;
|
||||
Players[Player_num].flags |= PLAYER_FLAGS_QUAD_LASERS;
|
||||
update_laser_weapon_info();
|
||||
}
|
||||
|
||||
if (cheat_codes[gotcha].stateptr == &cheats.wowie2)
|
||||
{
|
||||
HUD_init_message(HM_DEFAULT, "SUPER %s",TXT_WOWIE_ZOWIE);
|
||||
|
||||
Players[Player_num].primary_weapon_flags = 0xff;
|
||||
Players[Player_num].secondary_weapon_flags = 0xff;
|
||||
|
||||
for (i=0; i<MAX_PRIMARY_WEAPONS; i++)
|
||||
Players[Player_num].primary_ammo[i] = Primary_ammo_max[i];
|
||||
for (i=0; i<MAX_SECONDARY_WEAPONS; i++)
|
||||
Players[Player_num].secondary_ammo[i] = Secondary_ammo_max[i];
|
||||
|
||||
if (Newdemo_state == ND_STATE_RECORDING)
|
||||
newdemo_record_laser_level(Players[Player_num].laser_level, MAX_LASER_LEVEL);
|
||||
|
||||
Players[Player_num].energy = MAX_ENERGY;
|
||||
Players[Player_num].laser_level = MAX_LASER_LEVEL;
|
||||
Players[Player_num].flags |= PLAYER_FLAGS_QUAD_LASERS;
|
||||
update_laser_weapon_info();
|
||||
}
|
||||
|
||||
if (cheat_codes[gotcha].stateptr == &cheats.allkeys)
|
||||
{
|
||||
HUD_init_message(HM_DEFAULT, TXT_ALL_KEYS);
|
||||
Players[Player_num].flags |= PLAYER_FLAGS_BLUE_KEY | PLAYER_FLAGS_RED_KEY | PLAYER_FLAGS_GOLD_KEY;
|
||||
}
|
||||
|
||||
if (cheat_codes[gotcha].stateptr == &cheats.invul)
|
||||
{
|
||||
Players[Player_num].flags ^= PLAYER_FLAGS_INVULNERABLE;
|
||||
HUD_init_message(HM_DEFAULT, "%s %s!", TXT_INVULNERABILITY, (Players[Player_num].flags&PLAYER_FLAGS_INVULNERABLE)?TXT_ON:TXT_OFF);
|
||||
Players[Player_num].invulnerable_time = GameTime64+i2f(1000);
|
||||
}
|
||||
|
||||
if (cheat_codes[gotcha].stateptr == &cheats.cloak)
|
||||
{
|
||||
Players[Player_num].flags ^= PLAYER_FLAGS_CLOAKED;
|
||||
HUD_init_message(HM_DEFAULT, "%s %s!", TXT_CLOAK, (Players[Player_num].flags&PLAYER_FLAGS_CLOAKED)?TXT_ON:TXT_OFF);
|
||||
if (Players[Player_num].flags & PLAYER_FLAGS_CLOAKED)
|
||||
{
|
||||
ai_do_cloak_stuff();
|
||||
Players[Player_num].cloak_time = GameTime64;
|
||||
}
|
||||
}
|
||||
|
||||
if (cheat_codes[gotcha].stateptr == &cheats.shields)
|
||||
{
|
||||
HUD_init_message(HM_DEFAULT, TXT_FULL_SHIELDS);
|
||||
Players[Player_num].shields = MAX_SHIELDS;
|
||||
}
|
||||
|
||||
if (cheat_codes[gotcha].stateptr == &cheats.extralife)
|
||||
{
|
||||
if (Players[Player_num].lives<50)
|
||||
{
|
||||
Players[Player_num].lives++;
|
||||
HUD_init_message(HM_DEFAULT, "Extra life!");
|
||||
}
|
||||
}
|
||||
|
||||
if (cheat_codes[gotcha].stateptr == &cheats.killreactor)
|
||||
{
|
||||
kill_and_so_forth();
|
||||
}
|
||||
|
||||
if (cheat_codes[gotcha].stateptr == &cheats.exitpath)
|
||||
{
|
||||
#ifdef SHOW_EXIT_PATH
|
||||
if (create_special_path())
|
||||
HUD_init_message(HM_DEFAULT, "Exit path illuminated!");
|
||||
#endif
|
||||
}
|
||||
|
||||
if (cheat_codes[gotcha].stateptr == &cheats.levelwarp)
|
||||
{
|
||||
newmenu_item m;
|
||||
char text[10]="";
|
||||
int new_level_num;
|
||||
int item;
|
||||
*cheat_codes[gotcha].stateptr = 0;
|
||||
m.type=NM_TYPE_INPUT; m.text_len = 10; m.text = text;
|
||||
item = newmenu_do( NULL, TXT_WARP_TO_LEVEL, 1, &m, NULL, NULL );
|
||||
if (item != -1) {
|
||||
new_level_num = atoi(m.text);
|
||||
if (new_level_num!=0 && new_level_num>=0 && new_level_num<=Last_level)
|
||||
{
|
||||
window_set_visible(Game_wind, 0);
|
||||
StartNewLevel(new_level_num);
|
||||
window_set_visible(Game_wind, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (cheat_codes[gotcha].stateptr == &cheats.ghostphysics)
|
||||
{
|
||||
HUD_init_message(HM_DEFAULT, "%s %s!", "Ghosty mode", cheats.ghostphysics?TXT_ON:TXT_OFF);
|
||||
}
|
||||
|
||||
if (cheat_codes[gotcha].stateptr == &cheats.rapidfire)
|
||||
{
|
||||
do_megawow_powerup(200);
|
||||
}
|
||||
|
||||
if (cheat_codes[gotcha].stateptr == &cheats.turbo)
|
||||
{
|
||||
HUD_init_message(HM_DEFAULT, "%s %s!", "Turbo mode", cheats.turbo?TXT_ON:TXT_OFF);
|
||||
}
|
||||
|
||||
if (cheat_codes[gotcha].stateptr == &cheats.robotfiringsuspended)
|
||||
{
|
||||
HUD_init_message(HM_DEFAULT, "Robot firing %s!", cheats.robotfiringsuspended?TXT_OFF:TXT_ON);
|
||||
}
|
||||
|
||||
if (cheat_codes[gotcha].stateptr == &cheats.acid)
|
||||
{
|
||||
HUD_init_message(HM_DEFAULT, cheats.acid?"Going up!":"Coming down!");
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Internal Cheat Menu
|
||||
|
@ -1413,8 +1291,7 @@ int ReadControls(d_event *event)
|
|||
}
|
||||
else
|
||||
{
|
||||
FinalCheats(key);
|
||||
|
||||
if (FinalCheats(key)) return 1;
|
||||
if (HandleSystemKey(key)) return 1;
|
||||
if (HandleGameKey(key)) return 1;
|
||||
}
|
||||
|
|
|
@ -338,7 +338,7 @@ void game_draw_hud_stuff()
|
|||
}
|
||||
}
|
||||
|
||||
if (GameArg.SysFPSIndicator && PlayerCfg.CockpitMode[1] != CM_REAR_VIEW)
|
||||
if (GameCfg.FPSIndicator && PlayerCfg.CockpitMode[1] != CM_REAR_VIEW)
|
||||
show_framerate();
|
||||
|
||||
if (Newdemo_state == ND_STATE_PLAYBACK)
|
||||
|
|
|
@ -736,8 +736,6 @@ void InitPlayerObject()
|
|||
ConsoleObject->movement_type = MT_PHYSICS;
|
||||
}
|
||||
|
||||
extern void game_disable_cheats();
|
||||
|
||||
//starts a new game on the given level
|
||||
void StartNewGame(int start_level)
|
||||
{
|
||||
|
@ -768,23 +766,6 @@ void StartNewGame(int start_level)
|
|||
game_disable_cheats();
|
||||
}
|
||||
|
||||
//starts a resumed game loaded from disk
|
||||
void ResumeSavedGame(int start_level)
|
||||
{
|
||||
Game_mode = GM_NORMAL;
|
||||
|
||||
N_players = 1;
|
||||
#ifdef NETWORK
|
||||
Network_new_game = 0;
|
||||
#endif
|
||||
|
||||
InitPlayerObject(); //make sure player's object set up
|
||||
|
||||
StartNewLevel(start_level);
|
||||
|
||||
game_disable_cheats();
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// Does the bonus scoring.
|
||||
// Call with dead_flag = 1 if player died, but deserves some portion of bonus (only skill points), anyway.
|
||||
|
@ -806,7 +787,7 @@ void DoEndLevelScoreGlitz(int network)
|
|||
|
||||
level_points = Players[Player_num].score-Players[Player_num].last_score;
|
||||
|
||||
if (!Cheats_enabled) {
|
||||
if (!cheats.enabled) {
|
||||
if (Difficulty_level > 1) {
|
||||
skill_points = level_points*(Difficulty_level-1)/2;
|
||||
skill_points -= skill_points % 100;
|
||||
|
@ -826,13 +807,13 @@ void DoEndLevelScoreGlitz(int network)
|
|||
all_hostage_text[0] = 0;
|
||||
endgame_text[0] = 0;
|
||||
|
||||
if (!Cheats_enabled && (Players[Player_num].hostages_on_board == Players[Player_num].hostages_level)) {
|
||||
if (!cheats.enabled && (Players[Player_num].hostages_on_board == Players[Player_num].hostages_level)) {
|
||||
all_hostage_points = Players[Player_num].hostages_on_board * 1000 * (Difficulty_level+1);
|
||||
sprintf(all_hostage_text, "%s%i\n", TXT_FULL_RESCUE_BONUS, all_hostage_points);
|
||||
} else
|
||||
all_hostage_points = 0;
|
||||
|
||||
if (!Cheats_enabled && !(Game_mode & GM_MULTI) && (Players[Player_num].lives) && (Current_level_num == Last_level)) { //player has finished the game!
|
||||
if (!cheats.enabled && !(Game_mode & GM_MULTI) && (Players[Player_num].lives) && (Current_level_num == Last_level)) { //player has finished the game!
|
||||
endgame_points = Players[Player_num].lives * 10000;
|
||||
sprintf(endgame_text, "%s%i\n", TXT_SHIP_BONUS, endgame_points);
|
||||
is_last_level=1;
|
||||
|
@ -1258,7 +1239,7 @@ void StartNewLevelSub(int level_num, int page_in_textures)
|
|||
init_all_matcens();
|
||||
reset_palette_add();
|
||||
|
||||
if (!(Game_mode & GM_MULTI) && !Cheats_enabled)
|
||||
if (!(Game_mode & GM_MULTI) && !cheats.enabled)
|
||||
set_highest_level(Current_level_num);
|
||||
|
||||
reset_special_effects();
|
||||
|
@ -1446,8 +1427,6 @@ void StartLevel(int random)
|
|||
reset_rear_view();
|
||||
Auto_fire_fusion_cannon_time = 0;
|
||||
Fusion_charge = 0;
|
||||
|
||||
Robot_firing_enabled = 1;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -69,9 +69,6 @@ void StartNewLevelSub(int level_num, int page_in_textures);
|
|||
void InitPlayerObject(); //make sure player's object set up
|
||||
void init_player_stats_game(); //clear all stats
|
||||
|
||||
// starts a resumed game loaded from disk
|
||||
void ResumeSavedGame(int start_level);
|
||||
|
||||
// called when the player has finished a level
|
||||
// if secret flag is true, advance to secret level, else next normal level
|
||||
void PlayerFinishedLevel(int secret_flag);
|
||||
|
|
|
@ -781,7 +781,7 @@ void hud_show_score_added()
|
|||
|
||||
color = color - (color % 4);
|
||||
|
||||
if (Cheats_enabled)
|
||||
if (cheats.enabled)
|
||||
sprintf(score_str, "%s", TXT_CHEATER);
|
||||
else
|
||||
sprintf(score_str, "%5d", score_display);
|
||||
|
@ -857,7 +857,7 @@ void sb_show_score_added()
|
|||
if (color < 10) color = 10;
|
||||
if (color > 31) color = 31;
|
||||
|
||||
if (Cheats_enabled)
|
||||
if (cheats.enabled)
|
||||
sprintf(score_str, "%s", TXT_CHEATER);
|
||||
else
|
||||
sprintf(score_str, "%5d", score_display);
|
||||
|
@ -1327,7 +1327,7 @@ void add_points_to_score(int points)
|
|||
score_display += points;
|
||||
if (score_time > f1_0*4) score_time = f1_0*4;
|
||||
|
||||
if (points == 0 || Cheats_enabled)
|
||||
if (points == 0 || cheats.enabled)
|
||||
return;
|
||||
|
||||
if ((Game_mode & GM_MULTI) && !(Game_mode & GM_MULTI_COOP))
|
||||
|
@ -1365,7 +1365,7 @@ void add_bonus_points_to_score(int points)
|
|||
{
|
||||
int prev_score;
|
||||
|
||||
if (points == 0 || Cheats_enabled)
|
||||
if (points == 0 || cheats.enabled)
|
||||
return;
|
||||
|
||||
prev_score=Players[Player_num].score;
|
||||
|
|
|
@ -103,7 +103,6 @@ extern void arch_init(void);
|
|||
void print_commandline_help()
|
||||
{
|
||||
printf( "\n System Options:\n\n");
|
||||
printf( " -fps %s\n", "Enable FPS indicator by default");
|
||||
printf( " -nonicefps %s\n", "Don't free CPU-cycles");
|
||||
printf( " -maxfps <n> %s\n", "Set maximum framerate (1-200)");
|
||||
printf( " -hogdir <s> %s\n", "set shared data directory to <dir>");
|
||||
|
|
|
@ -1127,7 +1127,7 @@ void kconfig(int n, char * title)
|
|||
|
||||
void kconfig_read_controls(d_event *event, int automap_flag)
|
||||
{
|
||||
int i = 0, j = 0, speed_factor = Game_turbo_mode?2:1;
|
||||
int i = 0, j = 0, speed_factor = cheats.turbo?2:1;
|
||||
static fix64 mouse_delta_time = 0;
|
||||
|
||||
#ifndef NDEBUG
|
||||
|
|
|
@ -49,8 +49,6 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
|
|||
|
||||
#define NEWHOMER
|
||||
|
||||
int Laser_rapid_fire = 0;
|
||||
|
||||
int find_homing_object_complete(vms_vector *curpos, object *tracker, int track_obj_type1, int track_obj_type2);
|
||||
|
||||
//---------------------------------------------------------------------------------
|
||||
|
@ -1172,7 +1170,7 @@ int do_laser_firing_player(void)
|
|||
Last_laser_fired_time = GameTime64;
|
||||
//end move - Victor Rachels
|
||||
|
||||
if (Laser_rapid_fire!=0xBADA55)
|
||||
if (!cheats.rapidfire)
|
||||
Next_laser_fire_time += Weapon_info[weapon_index].fire_wait;
|
||||
else
|
||||
Next_laser_fire_time += F1_0/25;
|
||||
|
@ -1474,7 +1472,7 @@ void do_missile_firing(int drop_bomb)
|
|||
Players[Player_num].secondary_ammo[weapon]--;
|
||||
|
||||
weapon_index = Secondary_weapon_to_weapon_info[weapon];
|
||||
if (Laser_rapid_fire!=0xBADA55)
|
||||
if (!cheats.rapidfire)
|
||||
Next_missile_fire_time = GameTime64 + Weapon_info[weapon_index].fire_wait;
|
||||
else
|
||||
Next_missile_fire_time = GameTime64 + F1_0/25;
|
||||
|
|
12
main/menu.c
12
main/menu.c
|
@ -1211,7 +1211,7 @@ void reticle_config()
|
|||
PlayerCfg.ReticleSize = m[opt_ret_size].value;
|
||||
}
|
||||
|
||||
int opt_gr_texfilt, opt_gr_brightness, opt_gr_reticlemenu, opt_gr_alphafx, opt_gr_vsync, opt_gr_multisample;
|
||||
int opt_gr_texfilt, opt_gr_brightness, opt_gr_reticlemenu, opt_gr_alphafx, opt_gr_vsync, opt_gr_multisample, opt_gr_fpsindi;
|
||||
int graphics_config_menuset(newmenu *menu, d_event *event, void *userdata)
|
||||
{
|
||||
newmenu_item *items = newmenu_get_items(menu);
|
||||
|
@ -1252,10 +1252,10 @@ int graphics_config_menuset(newmenu *menu, d_event *event, void *userdata)
|
|||
void graphics_config()
|
||||
{
|
||||
#ifdef OGL
|
||||
newmenu_item m[11];
|
||||
newmenu_item m[12];
|
||||
int i = 0;
|
||||
#else
|
||||
newmenu_item m[2];
|
||||
newmenu_item m[3];
|
||||
#endif
|
||||
int nitems = 0;
|
||||
|
||||
|
@ -1279,7 +1279,10 @@ void graphics_config()
|
|||
m[nitems].type = NM_TYPE_CHECK; m[nitems].text="VSync"; m[nitems].value = GameCfg.VSync; nitems++;
|
||||
opt_gr_multisample = nitems;
|
||||
m[nitems].type = NM_TYPE_CHECK; m[nitems].text="4x multisampling"; m[nitems].value = GameCfg.Multisample; nitems++;
|
||||
|
||||
#endif
|
||||
opt_gr_fpsindi = nitems;
|
||||
m[nitems].type = NM_TYPE_CHECK; m[nitems].text="FPS Counter"; m[nitems].value = GameCfg.FPSIndicator; nitems++;
|
||||
#ifdef OGL
|
||||
m[opt_gr_texfilt+GameCfg.TexFilt].value=1;
|
||||
#endif
|
||||
|
||||
|
@ -1297,6 +1300,7 @@ void graphics_config()
|
|||
GameCfg.Multisample = m[opt_gr_multisample].value;
|
||||
#endif
|
||||
GameCfg.GammaLevel = m[opt_gr_brightness].value;
|
||||
GameCfg.FPSIndicator = m[opt_gr_fpsindi].value;
|
||||
#ifdef OGL
|
||||
gr_set_attributes();
|
||||
gr_set_mode(Game_screen_mode);
|
||||
|
|
|
@ -412,8 +412,6 @@ get_team(int pnum)
|
|||
return 0;
|
||||
}
|
||||
|
||||
extern void game_disable_cheats();
|
||||
|
||||
void
|
||||
multi_new_game(void)
|
||||
{
|
||||
|
|
|
@ -90,7 +90,6 @@ int IPX_Socket=0;
|
|||
int IPX_allow_socket_changes = 1;
|
||||
IPX_sequence_packet IPX_Seq;
|
||||
extern obj_position Player_init[MAX_PLAYERS];
|
||||
extern void game_disable_cheats();
|
||||
int net_ipx_wait_for_snyc();
|
||||
extern char MaxPowerupsAllowed[MAX_POWERUP_TYPES];
|
||||
extern char PowerupsInMine[MAX_POWERUP_TYPES];
|
||||
|
|
|
@ -85,7 +85,6 @@ void net_udp_noloss_init_mdata_queue(void);
|
|||
void net_udp_noloss_clear_mdata_got(ubyte player_num);
|
||||
void net_udp_noloss_process_queue(fix64 time);
|
||||
void net_udp_send_extras ();
|
||||
extern void game_disable_cheats();
|
||||
extern void multi_send_kill_goal_counts();
|
||||
|
||||
// Variables
|
||||
|
@ -826,8 +825,6 @@ void net_udp_init()
|
|||
if( UDP_Socket[1] != -1 )
|
||||
udp_close_socket(1);
|
||||
|
||||
game_disable_cheats();
|
||||
|
||||
for (t=0;t<MAX_POWERUP_TYPES;t++)
|
||||
{
|
||||
MaxPowerupsAllowed[t]=0;
|
||||
|
|
|
@ -39,7 +39,6 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
|
|||
//check point against each side of segment. return bitmask, where bit
|
||||
//set means behind that side
|
||||
|
||||
int Physics_cheat_flag = 0;
|
||||
int floor_levelling=0;
|
||||
|
||||
//make sure matrix is orthogonal
|
||||
|
@ -723,7 +722,7 @@ void do_physics_sim(object *obj)
|
|||
|
||||
|
||||
//hack to keep player from going through closed doors
|
||||
if (obj->type==OBJ_PLAYER && obj->segnum!=orig_segnum && (Physics_cheat_flag!=0xBADA55) ) {
|
||||
if (obj->type==OBJ_PLAYER && obj->segnum!=orig_segnum && (!cheats.ghostphysics) ) {
|
||||
int sidenum;
|
||||
|
||||
sidenum = find_connect_side(&Segments[obj->segnum],&Segments[orig_segnum]);
|
||||
|
|
|
@ -45,7 +45,7 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
|
|||
#define PLAYER_FLAGS_MAP_ALL 64 // Player can see unvisited areas on map
|
||||
#define PLAYER_FLAGS_RADAR_ENEMIES 128 // Player can see enemies on radar
|
||||
#define PLAYER_FLAGS_RADAR_POWERUPS 256 // Player can see powerups
|
||||
#define PLAYER_FLAGS_MAP_ALL_CHEAT 512 // Player can see unvisited areas on map normally
|
||||
// #define PLAYER_FLAGS_MAP_ALL_CHEAT 512 // Player can see unvisited areas on map normally -- OBSOLETE BY CHEAT STRUCT
|
||||
#define PLAYER_FLAGS_QUAD_LASERS 1024 // Player shoots 4 at once
|
||||
#define PLAYER_FLAGS_CLOAKED 2048 // Player is cloaked for awhile
|
||||
#define PLAYER_FLAGS_AFTERBURNER 4096 // Player's afterburner is engaged
|
||||
|
|
|
@ -20,7 +20,7 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
|
|||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <math.h>
|
||||
#include "inferno.h"
|
||||
#include "segment.h"
|
||||
#include "error.h"
|
||||
|
@ -48,6 +48,7 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
|
|||
#include "newmenu.h"
|
||||
#include "u_mem.h"
|
||||
#include "piggy.h"
|
||||
#include "timer.h"
|
||||
|
||||
#ifdef OGL
|
||||
#include "ogl_init.h"
|
||||
|
@ -603,9 +604,19 @@ g3s_codes rotate_list(int nv,short *pointnumlist)
|
|||
|
||||
pnt = &Segment_points[pnum];
|
||||
|
||||
if (Rotated_last[pnum] != RL_framecount) {
|
||||
|
||||
g3_rotate_point(pnt,&Vertices[pnum]);
|
||||
if (Rotated_last[pnum] != RL_framecount)
|
||||
{
|
||||
if (cheats.acid)
|
||||
{
|
||||
float f = (float) timer_query() / F1_0;
|
||||
vms_vector tmpv = Vertices[pnum];
|
||||
tmpv.x += fl2f(sinf(f * 2.0f + f2fl(tmpv.x)));
|
||||
tmpv.y += fl2f(sinf(f * 3.0f + f2fl(tmpv.y)));
|
||||
tmpv.z += fl2f(sinf(f * 5.0f + f2fl(tmpv.z)));
|
||||
g3_rotate_point(pnt,&tmpv);
|
||||
}
|
||||
else
|
||||
g3_rotate_point(pnt,&Vertices[pnum]);
|
||||
|
||||
Rotated_last[pnum] = RL_framecount;
|
||||
}
|
||||
|
|
59
main/state.c
59
main/state.c
|
@ -71,7 +71,7 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
|
|||
#define STATE_COMPATIBLE_VERSION 6
|
||||
// 0 - Put DGSS (Descent Game State Save) id at tof.
|
||||
// 1 - Added Difficulty level save
|
||||
// 2 - Added Cheats_enabled flag
|
||||
// 2 - Added cheats.enabled flag
|
||||
// 3 - Added between levels save.
|
||||
// 4 - Added mission support
|
||||
// 5 - Mike changed ai and object structure.
|
||||
|
@ -85,12 +85,6 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
|
|||
|
||||
extern int Do_appearance_effect;
|
||||
|
||||
extern int Laser_rapid_fire, Ugly_robot_cheat, Ugly_robot_texture;
|
||||
extern int Physics_cheat_flag;
|
||||
extern int Lunacy;
|
||||
extern void do_lunacy_on(void);
|
||||
extern void do_lunacy_off(void);
|
||||
|
||||
int state_save_all_sub(char *filename, char *desc);
|
||||
int state_restore_all_sub(char *filename);
|
||||
|
||||
|
@ -765,18 +759,16 @@ int state_save_old_game(int slotnum, char * sg_name, player_rw * sg_player,
|
|||
temp_int = sg_difficulty_level;
|
||||
PHYSFS_write(fp, &temp_int, sizeof(int), 1);
|
||||
|
||||
// Save the Cheats_enabled
|
||||
// Save the cheats.enabled
|
||||
temp_int = 0;
|
||||
PHYSFS_write(fp, &temp_int, sizeof(int), 1);
|
||||
temp_int = 0; // turbo mode
|
||||
PHYSFS_write(fp, &temp_int, sizeof(int), 1);
|
||||
|
||||
PHYSFS_write(fp, &cheats.enabled, sizeof(int), 1);
|
||||
PHYSFS_write( fp, &cheats.turbo, sizeof(int), 1);
|
||||
PHYSFS_write( fp, &state_game_id, sizeof(uint), 1 );
|
||||
PHYSFS_write( fp, &Laser_rapid_fire, sizeof(int), 1 );
|
||||
PHYSFS_write( fp, &Ugly_robot_cheat, sizeof(int), 1 );
|
||||
PHYSFS_write( fp, &Ugly_robot_texture, sizeof(int), 1 );
|
||||
PHYSFS_write( fp, &Physics_cheat_flag, sizeof(int), 1 );
|
||||
PHYSFS_write( fp, &Lunacy, sizeof(int), 1 );
|
||||
PHYSFS_write( fp, &cheats.rapidfire, sizeof(int), 1 );
|
||||
PHYSFS_write( fp, &temp_int, sizeof(int), 1 ); // was Ugly_robot_cheat
|
||||
PHYSFS_write( fp, &temp_int, sizeof(int), 1 ); // Ugly_robot_texture
|
||||
PHYSFS_write( fp, &cheats.ghostphysics, sizeof(int), 1 );
|
||||
PHYSFS_write( fp, &temp_int, sizeof(int), 1 ); // was Lunacy
|
||||
|
||||
PHYSFS_close(fp);
|
||||
|
||||
|
@ -937,8 +929,8 @@ int state_save_all_sub(char *filename, char *desc)
|
|||
PHYSFS_write(fp, &Difficulty_level, sizeof(int), 1);
|
||||
|
||||
// Save cheats enabled
|
||||
PHYSFS_write(fp, &Cheats_enabled, sizeof(int), 1);
|
||||
PHYSFS_write(fp, &Game_turbo_mode, sizeof(int), 1);
|
||||
PHYSFS_write(fp, &cheats.enabled, sizeof(int), 1);
|
||||
PHYSFS_write(fp, &cheats.turbo, sizeof(int), 1);
|
||||
|
||||
//Finish all morph objects
|
||||
for (i=0; i<=Highest_object_index; i++ ) {
|
||||
|
@ -1029,11 +1021,12 @@ int state_save_all_sub(char *filename, char *desc)
|
|||
PHYSFS_write(fp, Automap_visited, sizeof(ubyte), MAX_SEGMENTS);
|
||||
|
||||
PHYSFS_write(fp, &state_game_id, sizeof(uint), 1);
|
||||
PHYSFS_write(fp, &Laser_rapid_fire, sizeof(int), 1);
|
||||
PHYSFS_write(fp, &Ugly_robot_cheat, sizeof(int), 1);
|
||||
PHYSFS_write(fp, &Ugly_robot_texture, sizeof(int), 1);
|
||||
PHYSFS_write(fp, &Physics_cheat_flag, sizeof(int), 1);
|
||||
PHYSFS_write(fp, &Lunacy, sizeof(int), 1);
|
||||
i = 0;
|
||||
PHYSFS_write(fp, &cheats.rapidfire, sizeof(int), 1);
|
||||
PHYSFS_write(fp, &i, sizeof(int), 1); // was Ugly_robot_cheat
|
||||
PHYSFS_write(fp, &i, sizeof(int), 1); // was Ugly_robot_texture
|
||||
PHYSFS_write(fp, &cheats.ghostphysics, sizeof(int), 1);
|
||||
PHYSFS_write(fp, &i, sizeof(int), 1); // was Lunacy
|
||||
|
||||
// Save Coop Info
|
||||
if (Game_mode & GM_MULTI_COOP)
|
||||
|
@ -1237,8 +1230,8 @@ int state_restore_all_sub(char *filename)
|
|||
|
||||
// Restore the cheats enabled flag
|
||||
|
||||
Cheats_enabled = PHYSFSX_readSXE32(fp, swap);
|
||||
Game_turbo_mode = PHYSFSX_readSXE32(fp, swap);
|
||||
cheats.enabled = PHYSFSX_readSXE32(fp, swap);
|
||||
cheats.turbo = PHYSFSX_readSXE32(fp, swap);
|
||||
|
||||
Do_appearance_effect = 0; // Don't do this for middle o' game stuff.
|
||||
|
||||
|
@ -1374,15 +1367,13 @@ RetryObjectLoading:
|
|||
state_game_id = 0;
|
||||
|
||||
if ( version >= 7 ) {
|
||||
int tmp_Lunacy;
|
||||
int stub;
|
||||
state_game_id = PHYSFSX_readSXE32(fp, swap);
|
||||
Laser_rapid_fire = PHYSFSX_readSXE32(fp, swap);
|
||||
Ugly_robot_cheat = PHYSFSX_readSXE32(fp, swap);
|
||||
Ugly_robot_texture = PHYSFSX_readSXE32(fp, swap);
|
||||
Physics_cheat_flag = PHYSFSX_readSXE32(fp, swap);
|
||||
tmp_Lunacy = PHYSFSX_readSXE32(fp, swap);
|
||||
if ( tmp_Lunacy )
|
||||
do_lunacy_on();
|
||||
cheats.rapidfire = PHYSFSX_readSXE32(fp, swap);
|
||||
stub = PHYSFSX_readSXE32(fp, swap); // was Ugly_robot_cheat
|
||||
stub = PHYSFSX_readSXE32(fp, swap); // Ugly_robot_texture
|
||||
cheats.ghostphysics = PHYSFSX_readSXE32(fp, swap);
|
||||
stub = PHYSFSX_readSXE32(fp, swap); // was Lunacy
|
||||
}
|
||||
|
||||
// Read Coop Info
|
||||
|
|
|
@ -850,34 +850,11 @@ void init_new_page(briefing *br)
|
|||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
ubyte baldguy_cheat = 0;
|
||||
static ubyte bald_guy_cheat_index = 0;
|
||||
char new_baldguy_pcx[] = "btexture.xxx";
|
||||
|
||||
#define BALD_GUY_CHEAT_SIZE 7
|
||||
#define NEW_END_GUY1 1
|
||||
#define NEW_END_GUY2 3
|
||||
|
||||
ubyte bald_guy_cheat_1[BALD_GUY_CHEAT_SIZE] = { KEY_B ^ 0xF0 ^ 0xab,
|
||||
KEY_A ^ 0xE0 ^ 0xab,
|
||||
KEY_L ^ 0xD0 ^ 0xab,
|
||||
KEY_D ^ 0xC0 ^ 0xab,
|
||||
KEY_G ^ 0xB0 ^ 0xab,
|
||||
KEY_U ^ 0xA0 ^ 0xab,
|
||||
KEY_Y ^ 0x90 ^ 0xab };
|
||||
|
||||
void bald_guy_cheat(int key)
|
||||
{
|
||||
if (key == (bald_guy_cheat_1[bald_guy_cheat_index] ^ (0xf0 - (bald_guy_cheat_index << 4)) ^ 0xab)) {
|
||||
bald_guy_cheat_index++;
|
||||
if (bald_guy_cheat_index == BALD_GUY_CHEAT_SIZE) {
|
||||
baldguy_cheat = 1;
|
||||
bald_guy_cheat_index = 0;
|
||||
}
|
||||
} else
|
||||
bald_guy_cheat_index = 0;
|
||||
}
|
||||
|
||||
void free_briefing_screen(briefing *br);
|
||||
extern void swap_0_255(grs_bitmap *bmp);
|
||||
|
||||
|
@ -912,7 +889,7 @@ int load_briefing_screen(briefing *br, char *fname)
|
|||
if (stricmp(br->background_name, fname2))
|
||||
strncpy (br->background_name,fname2, sizeof(br->background_name));
|
||||
|
||||
if ((!stricmp(fname2, "brief02.pcx") || !stricmp(fname2, "brief02h.pcx")) && baldguy_cheat)
|
||||
if ((!stricmp(fname2, "brief02.pcx") || !stricmp(fname2, "brief02h.pcx")) && cheats.baldguy)
|
||||
if ( bald_guy_load(new_baldguy_pcx, &br->background, BM_LINEAR, gr_palette) == 0)
|
||||
{
|
||||
d_free(fname2);
|
||||
|
@ -1051,6 +1028,9 @@ int briefing_handler(window *wind, d_event *event, briefing *br)
|
|||
|
||||
switch (key)
|
||||
{
|
||||
case KEY_ALTED + KEY_B: // B - ALTED... BALT... BALD... get it?
|
||||
cheats.baldguy = !cheats.baldguy;
|
||||
break;
|
||||
case KEY_ESC:
|
||||
window_close(wind);
|
||||
return 1;
|
||||
|
|
|
@ -25,6 +25,5 @@ extern void do_briefing_screens(char *filename, int level_num);
|
|||
extern void do_end_briefing_screens(char *filename);
|
||||
extern char * get_briefing_screen( int level_num );
|
||||
extern void show_order_form(void);
|
||||
extern void bald_guy_cheat(int key);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -123,7 +123,6 @@ void ReadCmdArgs(void)
|
|||
// System Options
|
||||
|
||||
GameArg.SysShowCmdHelp = (FindArg( "-help" ) || FindArg( "-h" ) || FindArg( "-?" ) || FindArg( "?" ));
|
||||
GameArg.SysFPSIndicator = FindArg("-fps");
|
||||
GameArg.SysUseNiceFPS = !FindArg("-nonicefps");
|
||||
|
||||
GameArg.SysMaxFPS = get_int_arg("-maxfps", MAXIMUM_FPS);
|
||||
|
|
Loading…
Reference in a new issue