Move */main/gamecntl.c -> similar/main/gamecntl.c

This commit is contained in:
Kp 2013-03-03 01:03:33 +00:00
parent c49fb2a68d
commit e18fc92b68
5 changed files with 175 additions and 1423 deletions

View file

@ -454,6 +454,7 @@ class DXXProgram(DXXCommon):
'main/digiobj.c', 'main/digiobj.c',
'main/effects.c', 'main/effects.c',
'main/game.c', 'main/game.c',
'main/gamecntl.c',
'main/gamefont.c', 'main/gamefont.c',
'main/gamerend.c', 'main/gamerend.c',
'main/gameseg.c', 'main/gameseg.c',
@ -717,7 +718,6 @@ class D1XProgram(DXXProgram):
'main/fireball.c', 'main/fireball.c',
'main/fuelcen.c', 'main/fuelcen.c',
'main/fvi.c', 'main/fvi.c',
'main/gamecntl.c',
'main/gamemine.c', 'main/gamemine.c',
'main/gamesave.c', 'main/gamesave.c',
'main/gameseq.c', 'main/gameseq.c',
@ -813,7 +813,6 @@ class D2XProgram(DXXProgram):
'main/fireball.c', 'main/fireball.c',
'main/fuelcen.c', 'main/fuelcen.c',
'main/fvi.c', 'main/fvi.c',
'main/gamecntl.c',
'main/gamemine.c', 'main/gamemine.c',
'main/gamepal.c', 'main/gamepal.c',
'main/gamesave.c', 'main/gamesave.c',

File diff suppressed because it is too large Load diff

View file

@ -95,5 +95,10 @@ extern void trigger_read_n_swap(trigger *t, int n, int swap, PHYSFS_file *fp);
extern void trigger_write(trigger *t, short version, PHYSFS_file *fp); extern void trigger_write(trigger *t, short version, PHYSFS_file *fp);
static inline int trigger_is_exit(const trigger *t)
{
return t->flags == TRIGGER_EXIT;
}
#endif #endif

View file

@ -113,6 +113,11 @@ extern void check_trigger(segment *seg, short side, short objnum,int shot);
extern int check_trigger_sub(int trigger_num, int player_num,int shot); extern int check_trigger_sub(int trigger_num, int player_num,int shot);
extern void triggers_frame_process(); extern void triggers_frame_process();
static inline int trigger_is_exit(const trigger *t)
{
return t->type == TT_EXIT;
}
/* /*
* reads a v29_trigger structure from a PHYSFS_file * reads a v29_trigger structure from a PHYSFS_file
*/ */

View file

@ -75,7 +75,6 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
#include "titles.h" #include "titles.h"
#include "gr.h" #include "gr.h"
#include "playsave.h" #include "playsave.h"
#include "movie.h"
#include "scores.h" #include "scores.h"
#include "multi.h" #include "multi.h"
@ -88,7 +87,10 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
#include "ai.h" #include "ai.h"
#include "rbaudio.h" #include "rbaudio.h"
#include "switch.h" #include "switch.h"
#if defined(DXX_BUILD_DESCENT_II)
#include "escort.h" #include "escort.h"
#include "movie.h"
#endif
#include "window.h" #include "window.h"
#ifdef EDITOR #ifdef EDITOR
@ -98,8 +100,6 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
#include <SDL/SDL.h> #include <SDL/SDL.h>
extern void object_goto_prev_viewer(void);
// Global Variables ----------------------------------------------------------- // Global Variables -----------------------------------------------------------
int Debug_spew; int Debug_spew;
@ -132,11 +132,9 @@ extern int allowed_to_fire_flare(void);
extern void check_rear_view(void); extern void check_rear_view(void);
extern int create_special_path(void); extern int create_special_path(void);
extern void move_player_2_segment(segment *seg, int side); extern void move_player_2_segment(segment *seg, int side);
extern void kconfig_center_headset(void);
extern void newdemo_strip_frames(char *, int); extern void newdemo_strip_frames(char *, int);
extern void toggle_cockpit(void); extern void toggle_cockpit(void);
extern void dump_used_textures_all(); extern void dump_used_textures_all();
extern void DropMarker();
extern void DropSecondaryWeapon(); extern void DropSecondaryWeapon();
extern void DropCurrentWeapon(); extern void DropCurrentWeapon();
@ -156,6 +154,7 @@ void play_test_sound(void);
// Functions ------------------------------------------------------------------ // Functions ------------------------------------------------------------------
#if defined(DXX_BUILD_DESCENT_II)
#define CONVERTER_RATE 20 //10 units per second xfer rate #define CONVERTER_RATE 20 //10 units per second xfer rate
#define CONVERTER_SCALE 2 //2 units energy -> 1 unit shields #define CONVERTER_SCALE 2 //2 units energy -> 1 unit shields
@ -191,6 +190,7 @@ void transfer_energy_to_shield()
} }
} }
#endif
void update_vcr_state(); void update_vcr_state();
void do_weapon_n_item_stuff(void); void do_weapon_n_item_stuff(void);
@ -214,6 +214,7 @@ void update_vcr_state(void)
Newdemo_vcr_state = ND_STATE_PLAYBACK; Newdemo_vcr_state = ND_STATE_PLAYBACK;
} }
#if defined(DXX_BUILD_DESCENT_II)
//returns which bomb will be dropped next time the bomb key is pressed //returns which bomb will be dropped next time the bomb key is pressed
int which_bomb() int which_bomb()
{ {
@ -239,7 +240,7 @@ int which_bomb()
return bomb; return bomb;
} }
#endif
void do_weapon_n_item_stuff() void do_weapon_n_item_stuff()
{ {
@ -278,12 +279,14 @@ void do_weapon_n_item_stuff()
do_weapon_select(Controls.select_weapon_count>4?Controls.select_weapon_count-5:Controls.select_weapon_count,Controls.select_weapon_count>4?1:0); do_weapon_select(Controls.select_weapon_count>4?Controls.select_weapon_count-5:Controls.select_weapon_count,Controls.select_weapon_count>4?1:0);
Controls.select_weapon_count = 0; Controls.select_weapon_count = 0;
} }
#if defined(DXX_BUILD_DESCENT_II)
if (Controls.headlight_count > 0) if (Controls.headlight_count > 0)
{ {
for (i=0;i<Controls.headlight_count;i++) for (i=0;i<Controls.headlight_count;i++)
toggle_headlight_active (); toggle_headlight_active ();
Controls.headlight_count = 0; Controls.headlight_count = 0;
} }
#endif
if (Global_missile_firing_count < 0) if (Global_missile_firing_count < 0)
Global_missile_firing_count = 0; Global_missile_firing_count = 0;
@ -294,7 +297,7 @@ void do_weapon_n_item_stuff()
do_missile_firing(1); do_missile_firing(1);
Controls.drop_bomb_count--; Controls.drop_bomb_count--;
} }
#if defined(DXX_BUILD_DESCENT_II)
if (Controls.toggle_bomb_count > 0) if (Controls.toggle_bomb_count > 0)
{ {
int bomb = Secondary_last_was_super[PROXIMITY_INDEX]?PROXIMITY_INDEX:SMART_MINE_INDEX; int bomb = Secondary_last_was_super[PROXIMITY_INDEX]?PROXIMITY_INDEX:SMART_MINE_INDEX;
@ -322,13 +325,9 @@ void do_weapon_n_item_stuff()
if (Controls.energy_to_shield_state && (Players[Player_num].flags & PLAYER_FLAGS_CONVERTER)) if (Controls.energy_to_shield_state && (Players[Player_num].flags & PLAYER_FLAGS_CONVERTER))
transfer_energy_to_shield(); transfer_energy_to_shield();
#endif
} }
extern void game_render_frame();
extern void show_extra_views();
extern fix Flash_effect;
void format_time(char *str, int secs_int) void format_time(char *str, int secs_int)
{ {
int h, m, s; int h, m, s;
@ -594,6 +593,7 @@ int HandleDemoKey(int key)
return 1; return 1;
} }
#if defined(DXX_BUILD_DESCENT_II)
//switch a cockpit window to the next function //switch a cockpit window to the next function
int select_next_window_function(int w) int select_next_window_function(int w)
{ {
@ -654,6 +654,7 @@ int select_next_window_function(int w)
return 1; //screen_changed return 1; //screen_changed
} }
#endif
#ifdef DOOR_DEBUGGING #ifdef DOOR_DEBUGGING
dump_door_debugging_info() dump_door_debugging_info()
@ -762,7 +763,7 @@ int HandleSystemKey(int key)
return 1; return 1;
} }
#if defined(DXX_BUILD_DESCENT_II)
// fleshed these out because F1 and F2 aren't sequenctial keycodes on mac -- MWA // fleshed these out because F1 and F2 aren't sequenctial keycodes on mac -- MWA
KEY_MAC(case KEY_COMMAND+KEY_SHIFTED+KEY_1:) KEY_MAC(case KEY_COMMAND+KEY_SHIFTED+KEY_1:)
@ -773,6 +774,7 @@ int HandleSystemKey(int key)
case KEY_SHIFTED+KEY_F2: case KEY_SHIFTED+KEY_F2:
select_next_window_function(1); select_next_window_function(1);
return 1; return 1;
#endif
} }
switch (key) switch (key)
@ -916,7 +918,7 @@ int HandleSystemKey(int key)
state_restore_all(1, 0, NULL); state_restore_all(1, 0, NULL);
break; break;
#if defined(DXX_BUILD_DESCENT_II)
KEY_MAC(case KEY_COMMAND+KEY_SHIFTED+KEY_4:) KEY_MAC(case KEY_COMMAND+KEY_SHIFTED+KEY_4:)
case KEY_F4 + KEY_SHIFTED: case KEY_F4 + KEY_SHIFTED:
do_escort_menu(); do_escort_menu();
@ -927,6 +929,7 @@ int HandleSystemKey(int key)
case KEY_F4 + KEY_SHIFTED + KEY_ALTED: case KEY_F4 + KEY_SHIFTED + KEY_ALTED:
change_guidebot_name(); change_guidebot_name();
break; break;
#endif
/* /*
* Jukebox hotkeys -- MD2211, 2007 * Jukebox hotkeys -- MD2211, 2007
@ -972,7 +975,7 @@ extern void DropFlag();
int HandleGameKey(int key) int HandleGameKey(int key)
{ {
switch (key) { switch (key) {
#if defined(DXX_BUILD_DESCENT_II)
case KEY_1 + KEY_SHIFTED: case KEY_1 + KEY_SHIFTED:
case KEY_2 + KEY_SHIFTED: case KEY_2 + KEY_SHIFTED:
case KEY_3 + KEY_SHIFTED: case KEY_3 + KEY_SHIFTED:
@ -994,6 +997,7 @@ int HandleGameKey(int key)
} }
else else
return 0; return 0;
#endif
case KEY_ALTED+KEY_F7: case KEY_ALTED+KEY_F7:
KEY_MAC(case KEY_COMMAND+KEY_ALTED+KEY_7:) KEY_MAC(case KEY_COMMAND+KEY_ALTED+KEY_7:)
@ -1038,52 +1042,17 @@ int HandleGameKey(int key)
#endif #endif
default: default:
#if defined(DXX_BUILD_DESCENT_I)
return 0;
#endif
break; break;
} //switch (key) } //switch (key)
#if defined(DXX_BUILD_DESCENT_II)
if (!Player_is_dead) if (!Player_is_dead)
switch (key) switch (key)
{ {
#if 0
// weapon selection handled in kconfig_read_controls, d1x-style
// MWA changed the weapon select cases to have each case call
// do_weapon_select the macintosh keycodes aren't consecutive from 1
// -- 0 on the keyboard -- boy is that STUPID!!!!
// Select primary or secondary weapon.
case KEY_1:
do_weapon_select(0 , 0);
break;
case KEY_2:
do_weapon_select(1 , 0);
break;
case KEY_3:
do_weapon_select(2 , 0);
break;
case KEY_4:
do_weapon_select(3 , 0);
break;
case KEY_5:
do_weapon_select(4 , 0);
break;
case KEY_6:
do_weapon_select(0 , 1);
break;
case KEY_7:
do_weapon_select(1 , 1);
break;
case KEY_8:
do_weapon_select(2 , 1);
break;
case KEY_9:
do_weapon_select(3 , 1);
break;
case KEY_0:
do_weapon_select(4 , 1);
break;
#endif
KEY_MAC(case KEY_COMMAND+KEY_SHIFTED+KEY_5:) KEY_MAC(case KEY_COMMAND+KEY_SHIFTED+KEY_5:)
case KEY_F5 + KEY_SHIFTED: case KEY_F5 + KEY_SHIFTED:
DropCurrentWeapon(); DropCurrentWeapon();
@ -1112,10 +1081,12 @@ int HandleGameKey(int key)
} }
else else
return 0; return 0;
#endif
return 1; return 1;
} }
#if defined(DXX_BUILD_DESCENT_II)
void kill_all_robots(void) void kill_all_robots(void)
{ {
int i, dead_count=0; int i, dead_count=0;
@ -1149,6 +1120,7 @@ void kill_all_robots(void)
HUD_init_message(HM_DEFAULT, "%i robots toasted!", dead_count); HUD_init_message(HM_DEFAULT, "%i robots toasted!", dead_count);
} }
#endif
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
// Detonate reactor. // Detonate reactor.
@ -1176,7 +1148,7 @@ void kill_and_so_forth(void)
do_controlcen_destroyed_stuff(NULL); do_controlcen_destroyed_stuff(NULL);
for (i=0; i<Num_triggers; i++) { for (i=0; i<Num_triggers; i++) {
if (Triggers[i].type == TT_EXIT) { if (trigger_is_exit(&Triggers[i])) {
for (j=0; j<Num_walls; j++) { for (j=0; j<Num_walls; j++) {
if (Walls[j].trigger == i) { if (Walls[j].trigger == i) {
compute_segment_center(&ConsoleObject->pos, &Segments[Walls[j].segnum]); compute_segment_center(&ConsoleObject->pos, &Segments[Walls[j].segnum]);
@ -1192,7 +1164,7 @@ kasf_done: ;
} }
#ifndef RELEASE #ifndef RELEASE
#if defined(DXX_BUILD_DESCENT_II)
void kill_all_snipers(void) void kill_all_snipers(void)
{ {
int i, dead_count=0; int i, dead_count=0;
@ -1233,6 +1205,7 @@ void kill_buddy(void)
HUD_init_message(HM_DEFAULT, "Buddy toasted!"); HUD_init_message(HM_DEFAULT, "Buddy toasted!");
} }
} }
#endif
int HandleTestKey(int key) int HandleTestKey(int key)
{ {
@ -1247,6 +1220,7 @@ int HandleTestKey(int key)
do_controlcen_destroyed_stuff(NULL); do_controlcen_destroyed_stuff(NULL);
break; break;
#if defined(DXX_BUILD_DESCENT_II)
#ifdef NETWORK #ifdef NETWORK
case KEY_DEBUGGED+KEY_ALTED+KEY_D: case KEY_DEBUGGED+KEY_ALTED+KEY_D:
PlayerCfg.NetlifeKills=4000; PlayerCfg.NetlifeKilled=5; PlayerCfg.NetlifeKills=4000; PlayerCfg.NetlifeKilled=5;
@ -1254,6 +1228,11 @@ int HandleTestKey(int key)
break; break;
#endif #endif
case KEY_DEBUGGED+KEY_R+KEY_SHIFTED:
kill_all_robots();
break;
#endif
case KEY_BACKSP: case KEY_BACKSP:
case KEY_CTRLED+KEY_BACKSP: case KEY_CTRLED+KEY_BACKSP:
case KEY_ALTED+KEY_BACKSP: case KEY_ALTED+KEY_BACKSP:
@ -1299,10 +1278,6 @@ int HandleTestKey(int key)
cheats.robotfiringsuspended = !cheats.robotfiringsuspended; cheats.robotfiringsuspended = !cheats.robotfiringsuspended;
break; break;
case KEY_DEBUGGED+KEY_R+KEY_SHIFTED:
kill_all_robots();
break;
#ifdef EDITOR //editor-specific functions #ifdef EDITOR //editor-specific functions
case KEY_E + KEY_DEBUGGED: case KEY_E + KEY_DEBUGGED:
@ -1310,6 +1285,7 @@ int HandleTestKey(int key)
init_editor(); init_editor();
window_close(Game_wind); window_close(Game_wind);
break; break;
#if defined(DXX_BUILD_DESCENT_II)
case KEY_Q + KEY_SHIFTED + KEY_DEBUGGED: case KEY_Q + KEY_SHIFTED + KEY_DEBUGGED:
{ {
char pal_save[768]; char pal_save[768];
@ -1324,6 +1300,7 @@ int HandleTestKey(int key)
gr_palette_load(gr_palette); gr_palette_load(gr_palette);
break; break;
} }
#endif
case KEY_C + KEY_SHIFTED + KEY_DEBUGGED: case KEY_C + KEY_SHIFTED + KEY_DEBUGGED:
if (!Player_is_dead && !( Game_mode & GM_MULTI )) if (!Player_is_dead && !( Game_mode & GM_MULTI ))
move_player_2_segment(Cursegp,Curside); move_player_2_segment(Cursegp,Curside);
@ -1339,10 +1316,12 @@ int HandleTestKey(int key)
case KEY_DEBUGGED+KEY_O: toggle_outline_mode(); break; case KEY_DEBUGGED+KEY_O: toggle_outline_mode(); break;
case KEY_DEBUGGED+KEY_T: case KEY_DEBUGGED+KEY_T:
*Toggle_var = !*Toggle_var; *Toggle_var = !*Toggle_var;
#if defined(DXX_BUILD_DESCENT_II)
if (*Toggle_var) if (*Toggle_var)
GameArg.SysMaxFPS = 300; GameArg.SysMaxFPS = 300;
else else
GameArg.SysMaxFPS = 30; GameArg.SysMaxFPS = 30;
#endif
break; break;
case KEY_DEBUGGED + KEY_L: case KEY_DEBUGGED + KEY_L:
if (++Lighting_on >= 2) Lighting_on = 0; break; if (++Lighting_on >= 2) Lighting_on = 0; break;
@ -1436,24 +1415,28 @@ int HandleTestKey(int key)
} }
#endif //#ifndef RELEASE #endif //#ifndef RELEASE
// Cheat functions ------------------------------------------------------------
char *AcidCheat ="qPmwxz\"S"; // bit-tersweet
// Main Cheat function
char AcidCheatOn=0;
char old_IntMethod;
#define CHEAT_MAX_LEN 15 #define CHEAT_MAX_LEN 15
#define NUM_CHEATS 28
typedef struct cheat_code typedef struct cheat_code
{ {
char *string; char *string;
int *stateptr; int *stateptr;
} __pack__ cheat_code; } __pack__ cheat_code;
cheat_code cheat_codes[NUM_CHEATS] = { static const cheat_code cheat_codes[] = {
#if defined(DXX_BUILD_DESCENT_I)
{ "gabbagabbahey", &cheats.enabled },
{ "scourge", &cheats.wowie },
{ "bigred", &cheats.wowie2 },
{ "mitzi", &cheats.allkeys },
{ "racerx", &cheats.invul },
{ "guile", &cheats.cloak },
{ "twilight", &cheats.shields },
{ "poboys", &cheats.killreactor },
{ "farmerjoe", &cheats.levelwarp },
{ "bruin", &cheats.extralife },
{ "porgys", &cheats.rapidfire },
{ "ahimsa", &cheats.robotfiringsuspended },
#elif defined(DXX_BUILD_DESCENT_II)
{ "gabbagabbahey", &cheats.lamer }, { "gabbagabbahey", &cheats.lamer },
{ "motherlode", &cheats.lamer }, { "motherlode", &cheats.lamer },
{ "currygoat", &cheats.lamer }, { "currygoat", &cheats.lamer },
@ -1468,19 +1451,20 @@ cheat_code cheat_codes[NUM_CHEATS] = {
{ "almighty", &cheats.invul }, { "almighty", &cheats.invul },
{ "blueorb", &cheats.shields }, { "blueorb", &cheats.shields },
{ "delshiftb", &cheats.killreactor }, { "delshiftb", &cheats.killreactor },
{ "flash", &cheats.exitpath },
{ "freespace", &cheats.levelwarp }, { "freespace", &cheats.levelwarp },
{ "rockrgrl", &cheats.fullautomap }, { "rockrgrl", &cheats.fullautomap },
{ "astral", &cheats.ghostphysics },
{ "wildfire", &cheats.rapidfire }, { "wildfire", &cheats.rapidfire },
{ "duddaboo", &cheats.bouncyfire }, { "duddaboo", &cheats.bouncyfire },
{ "buggin", &cheats.turbo },
{ "imagespace", &cheats.robotfiringsuspended }, { "imagespace", &cheats.robotfiringsuspended },
{ "spaniard", &cheats.killallrobots }, { "spaniard", &cheats.killallrobots },
{ "silkwing", &cheats.robotskillrobots }, { "silkwing", &cheats.robotskillrobots },
{ "godzilla", &cheats.monsterdamage }, { "godzilla", &cheats.monsterdamage },
{ "helpvishnu", &cheats.buddyclone }, { "helpvishnu", &cheats.buddyclone },
{ "gowingnut", &cheats.buddyangry }, { "gowingnut", &cheats.buddyangry },
#endif
{ "flash", &cheats.exitpath },
{ "astral", &cheats.ghostphysics },
{ "buggin", &cheats.turbo },
{ "bittersweet", &cheats.acid }, { "bittersweet", &cheats.acid },
}; };
@ -1495,12 +1479,18 @@ int FinalCheats(int key)
for (i = 1; i < CHEAT_MAX_LEN; i++) for (i = 1; i < CHEAT_MAX_LEN; i++)
cheat_buffer[i-1] = cheat_buffer[i]; cheat_buffer[i-1] = cheat_buffer[i];
cheat_buffer[CHEAT_MAX_LEN-1] = key_ascii(); cheat_buffer[CHEAT_MAX_LEN-1] = key_ascii();
for (i = 0; i < NUM_CHEATS; i++) for (i = 0; i < sizeof(cheat_codes) / sizeof(cheat_codes[0]); i++)
{ {
int cheatlen = strlen(cheat_codes[i].string); int cheatlen = strlen(cheat_codes[i].string);
Assert(cheatlen <= CHEAT_MAX_LEN); Assert(cheatlen <= CHEAT_MAX_LEN);
if (d_strnicmp(cheat_codes[i].string, cheat_buffer+CHEAT_MAX_LEN-cheatlen, cheatlen)==0) if (d_strnicmp(cheat_codes[i].string, cheat_buffer+CHEAT_MAX_LEN-cheatlen, cheatlen)==0)
{ {
#if defined(DXX_BUILD_DESCENT_I)
if (!cheats.enabled && *cheat_codes[i].stateptr != cheats.enabled)
break;
if (!cheats.enabled)
HUD_init_message(HM_DEFAULT, TXT_CHEATS_ENABLED);
#endif
*cheat_codes[i].stateptr = !*cheat_codes[i].stateptr; *cheat_codes[i].stateptr = !*cheat_codes[i].stateptr;
cheats.enabled = 1; cheats.enabled = 1;
digi_play_sample( SOUND_CHEATER, F1_0); digi_play_sample( SOUND_CHEATER, F1_0);
@ -1513,6 +1503,49 @@ int FinalCheats(int key)
if (!gotcha) if (!gotcha)
return 0; return 0;
#if defined(DXX_BUILD_DESCENT_I)
if (cheat_codes[gotcha].stateptr == &cheats.wowie)
{
HUD_init_message(HM_DEFAULT, "%s", 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();
}
#elif defined(DXX_BUILD_DESCENT_II)
if (cheat_codes[gotcha].stateptr == &cheats.lamer) if (cheat_codes[gotcha].stateptr == &cheats.lamer)
{ {
Players[Player_num].shields=Players[Player_num].energy=i2f(1); Players[Player_num].shields=Players[Player_num].energy=i2f(1);
@ -1555,12 +1588,6 @@ int FinalCheats(int key)
update_laser_weapon_info(); update_laser_weapon_info();
} }
if (cheat_codes[gotcha].stateptr == &cheats.allkeys)
{
HUD_init_message(HM_DEFAULT, "%s", 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.accessory) if (cheat_codes[gotcha].stateptr == &cheats.accessory)
{ {
Players[Player_num].flags |=PLAYER_FLAGS_HEADLIGHT; Players[Player_num].flags |=PLAYER_FLAGS_HEADLIGHT;
@ -1569,6 +1596,13 @@ int FinalCheats(int key)
Players[Player_num].flags |=PLAYER_FLAGS_CONVERTER; Players[Player_num].flags |=PLAYER_FLAGS_CONVERTER;
HUD_init_message(HM_DEFAULT, "Accessories!!"); HUD_init_message(HM_DEFAULT, "Accessories!!");
} }
#endif
if (cheat_codes[gotcha].stateptr == &cheats.allkeys)
{
HUD_init_message(HM_DEFAULT, "%s", 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) if (cheat_codes[gotcha].stateptr == &cheats.invul)
{ {
@ -1583,6 +1617,28 @@ int FinalCheats(int key)
Players[Player_num].shields = MAX_SHIELDS; Players[Player_num].shields = MAX_SHIELDS;
} }
#if defined(DXX_BUILD_DESCENT_I)
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.extralife)
{
if (Players[Player_num].lives<50)
{
Players[Player_num].lives++;
HUD_init_message(HM_DEFAULT, "Extra life!");
}
}
#endif
if (cheat_codes[gotcha].stateptr == &cheats.killreactor) if (cheat_codes[gotcha].stateptr == &cheats.killreactor)
{ {
kill_and_so_forth(); kill_and_so_forth();
@ -1619,8 +1675,12 @@ int FinalCheats(int key)
} }
if (cheat_codes[gotcha].stateptr == &cheats.rapidfire) if (cheat_codes[gotcha].stateptr == &cheats.rapidfire)
#if defined(DXX_BUILD_DESCENT_I)
{
do_megawow_powerup(200);
}
#elif defined(DXX_BUILD_DESCENT_II)
{ {
HUD_init_message(HM_DEFAULT, "Rapid fire %s!", cheats.rapidfire?TXT_ON:TXT_OFF); HUD_init_message(HM_DEFAULT, "Rapid fire %s!", cheats.rapidfire?TXT_ON:TXT_OFF);
} }
@ -1629,10 +1689,10 @@ int FinalCheats(int key)
HUD_init_message(HM_DEFAULT, "Bouncing weapons %s!", cheats.bouncyfire?TXT_ON:TXT_OFF); HUD_init_message(HM_DEFAULT, "Bouncing weapons %s!", cheats.bouncyfire?TXT_ON:TXT_OFF);
} }
#endif
if (cheat_codes[gotcha].stateptr == &cheats.turbo) if (cheat_codes[gotcha].stateptr == &cheats.turbo)
{ {
HUD_init_message(HM_DEFAULT, "%s %s!", "Turbo mode", cheats.turbo?TXT_ON:TXT_OFF); HUD_init_message(HM_DEFAULT, "%s %s!", "Turbo mode", cheats.turbo?TXT_ON:TXT_OFF);
} }
@ -1641,6 +1701,7 @@ int FinalCheats(int key)
HUD_init_message(HM_DEFAULT, "Robot firing %s!", cheats.robotfiringsuspended?TXT_OFF:TXT_ON); HUD_init_message(HM_DEFAULT, "Robot firing %s!", cheats.robotfiringsuspended?TXT_OFF:TXT_ON);
} }
#if defined(DXX_BUILD_DESCENT_II)
if (cheat_codes[gotcha].stateptr == &cheats.killallrobots) if (cheat_codes[gotcha].stateptr == &cheats.killallrobots)
{ {
kill_all_robots(); kill_all_robots();
@ -1676,6 +1737,7 @@ int FinalCheats(int key)
HUD_init_message(HM_DEFAULT, "%s calms down",PlayerCfg.GuidebotName); HUD_init_message(HM_DEFAULT, "%s calms down",PlayerCfg.GuidebotName);
} }
} }
#endif
if (cheat_codes[gotcha].stateptr == &cheats.acid) if (cheat_codes[gotcha].stateptr == &cheats.acid)
{ {
@ -1685,7 +1747,6 @@ int FinalCheats(int key)
return 1; return 1;
} }
// Internal Cheat Menu // Internal Cheat Menu
#ifndef RELEASE #ifndef RELEASE
void do_cheat_menu() void do_cheat_menu()
@ -1703,15 +1764,20 @@ void do_cheat_menu()
mm[4].type=NM_TYPE_NUMBER; mm[4].value=f2i(Players[Player_num].shields); mm[4].text="% Shields"; mm[4].min_value=0; mm[4].max_value=200; mm[4].type=NM_TYPE_NUMBER; mm[4].value=f2i(Players[Player_num].shields); mm[4].text="% Shields"; mm[4].min_value=0; mm[4].max_value=200;
mm[5].type=NM_TYPE_TEXT; mm[5].text = "Score:"; mm[5].type=NM_TYPE_TEXT; mm[5].text = "Score:";
mm[6].type=NM_TYPE_INPUT; mm[6].text_len = 10; mm[6].text = score_text; mm[6].type=NM_TYPE_INPUT; mm[6].text_len = 10; mm[6].text = score_text;
//mm[7].type=NM_TYPE_RADIO; mm[7].value=(Players[Player_num].laser_level==0); mm[7].group=0; mm[7].text="Laser level 1"; #if defined(DXX_BUILD_DESCENT_I)
//mm[8].type=NM_TYPE_RADIO; mm[8].value=(Players[Player_num].laser_level==1); mm[8].group=0; mm[8].text="Laser level 2"; mm[7].type=NM_TYPE_RADIO; mm[7].value=(Players[Player_num].laser_level==0); mm[7].group=0; mm[7].text="Laser level 1";
//mm[9].type=NM_TYPE_RADIO; mm[9].value=(Players[Player_num].laser_level==2); mm[9].group=0; mm[9].text="Laser level 3"; mm[8].type=NM_TYPE_RADIO; mm[8].value=(Players[Player_num].laser_level==1); mm[8].group=0; mm[8].text="Laser level 2";
//mm[10].type=NM_TYPE_RADIO; mm[10].value=(Players[Player_num].laser_level==3); mm[10].group=0; mm[10].text="Laser level 4"; mm[9].type=NM_TYPE_RADIO; mm[9].value=(Players[Player_num].laser_level==2); mm[9].group=0; mm[9].text="Laser level 3";
mm[10].type=NM_TYPE_RADIO; mm[10].value=(Players[Player_num].laser_level==3); mm[10].group=0; mm[10].text="Laser level 4";
mm[11].type=NM_TYPE_NUMBER; mm[11].value=Players[Player_num].secondary_ammo[CONCUSSION_INDEX]; mm[11].text="Missiles"; mm[11].min_value=0; mm[11].max_value=200;
mmn = newmenu_do("Wimp Menu",NULL,12, mm, NULL, NULL );
#elif defined(DXX_BUILD_DESCENT_II)
mm[7].type=NM_TYPE_NUMBER; mm[7].value=Players[Player_num].laser_level+1; mm[7].text="Laser Level"; mm[7].min_value=0; mm[7].max_value=MAX_SUPER_LASER_LEVEL+1; mm[7].type=NM_TYPE_NUMBER; mm[7].value=Players[Player_num].laser_level+1; mm[7].text="Laser Level"; mm[7].min_value=0; mm[7].max_value=MAX_SUPER_LASER_LEVEL+1;
mm[8].type=NM_TYPE_NUMBER; mm[8].value=Players[Player_num].secondary_ammo[CONCUSSION_INDEX]; mm[8].text="Missiles"; mm[8].min_value=0; mm[8].max_value=200; mm[8].type=NM_TYPE_NUMBER; mm[8].value=Players[Player_num].secondary_ammo[CONCUSSION_INDEX]; mm[8].text="Missiles"; mm[8].min_value=0; mm[8].max_value=200;
mmn = newmenu_do("Wimp Menu",NULL,9, mm, NULL, NULL ); mmn = newmenu_do("Wimp Menu",NULL,9, mm, NULL, NULL );
#endif
if (mmn > -1 ) { if (mmn > -1 ) {
if ( mm[0].value ) { if ( mm[0].value ) {
@ -1736,12 +1802,16 @@ void do_cheat_menu()
Players[Player_num].energy=i2f(mm[3].value); Players[Player_num].energy=i2f(mm[3].value);
Players[Player_num].shields=i2f(mm[4].value); Players[Player_num].shields=i2f(mm[4].value);
Players[Player_num].score = atoi(mm[6].text); Players[Player_num].score = atoi(mm[6].text);
//if (mm[7].value) Players[Player_num].laser_level=0; #if defined(DXX_BUILD_DESCENT_I)
//if (mm[8].value) Players[Player_num].laser_level=1; if (mm[7].value) Players[Player_num].laser_level=0;
//if (mm[9].value) Players[Player_num].laser_level=2; if (mm[8].value) Players[Player_num].laser_level=1;
//if (mm[10].value) Players[Player_num].laser_level=3; if (mm[9].value) Players[Player_num].laser_level=2;
if (mm[10].value) Players[Player_num].laser_level=3;
Players[Player_num].secondary_ammo[CONCUSSION_INDEX] = mm[11].value;
#elif defined(DXX_BUILD_DESCENT_II)
Players[Player_num].laser_level = mm[7].value-1; Players[Player_num].laser_level = mm[7].value-1;
Players[Player_num].secondary_ammo[CONCUSSION_INDEX] = mm[8].value; Players[Player_num].secondary_ammo[CONCUSSION_INDEX] = mm[8].value;
#endif
init_gauges(); init_gauges();
} }
} }
@ -1804,12 +1874,12 @@ int ReadControls(d_event *event)
if (event->type == EVENT_KEY_COMMAND) if (event->type == EVENT_KEY_COMMAND)
{ {
key = event_key_get(event); key = event_key_get(event);
#if defined(DXX_BUILD_DESCENT_II)
if (DefiningMarkerMessage) if (DefiningMarkerMessage)
{ {
return MarkerInputMessage(key); return MarkerInputMessage(key);
} }
#endif
#ifdef NETWORK #ifdef NETWORK
if ( (Game_mode & GM_MULTI) && (multi_sending_message[Player_num] || multi_defining_message) ) if ( (Game_mode & GM_MULTI) && (multi_sending_message[Player_num] || multi_defining_message) )
{ {