diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 7dbef3e3f..91a73a876 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -3,6 +3,7 @@ D1X-Rebirth Changelog 20120618 -------- main/gamerend.c, main/multi.c: removed temp_string buffer for ingame message inputs preventing the string from being messed up if containing special characters +main/game.c, main/gameseq.c, main/multi.c, main/multi.h, main/player.h, main/powerup.c: Introduced INITIAL_ENERGY and INITIAL_SHIELDS defines from d2x and on that way added handicap feature for multiplayer as well; incremented multi proto version 20120610 -------- diff --git a/main/game.c b/main/game.c index fee1ff8be..897f13875 100644 --- a/main/game.c +++ b/main/game.c @@ -724,7 +724,7 @@ void show_netgame_help() int nitems = 0; newmenu_item *m; - MALLOC(m, newmenu_item, 15); + MALLOC(m, newmenu_item, 16); if (!m) return; @@ -748,6 +748,7 @@ void show_netgame_help() m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = ""; m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "MULTIPLAYER MESSAGE COMMANDS:"; m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "(*): TEXT\t SEND TEXT TO PLAYER/TEAM (*)"; + m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "/Handicap: (*)\t SET YOUR STARTING SHIELDS TO (*) [10-100]"; m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "/move: (*)\t MOVE PLAYER (*) TO OTHER TEAM (Host-only)"; m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "/kick: (*)\t KICK PLAYER (*) FROM GAME (Host-only)"; m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "/KillReactor\t BLOW UP THE MINE (Host-only)"; diff --git a/main/gameseq.c b/main/gameseq.c index 5d15cadab..01a00e050 100644 --- a/main/gameseq.c +++ b/main/gameseq.c @@ -240,6 +240,8 @@ void gameseq_remove_unused_players() } } +fix StartingShields=INITIAL_SHIELDS; + // Setup player for new game void init_player_stats_game(ubyte pnum) { @@ -271,10 +273,10 @@ void init_player_stats_game(ubyte pnum) void init_ammo_and_energy(void) { - if (Players[Player_num].energy < MAX_ENERGY) - Players[Player_num].energy = MAX_ENERGY; - if (Players[Player_num].shields < MAX_SHIELDS) - Players[Player_num].shields = MAX_SHIELDS; + if (Players[Player_num].energy < INITIAL_ENERGY) + Players[Player_num].energy = INITIAL_ENERGY; + if (Players[Player_num].shields < StartingShields) + Players[Player_num].shields = StartingShields; // for (i=0; i i2f(3600) ) { - Players[Player_num].time_level -= i2f(3600); - Players[Player_num].hours_level++; - } + Players[Player_num].time_level += FrameTime; //the never-ending march of time... + if ( Players[Player_num].time_level > i2f(3600) ) { + Players[Player_num].time_level -= i2f(3600); + Players[Player_num].hours_level++; + } - Players[Player_num].time_total += FrameTime; //the never-ending march of time... - if ( Players[Player_num].time_total > i2f(3600) ) { - Players[Player_num].time_total -= i2f(3600); - Players[Player_num].hours_total++; - } -// } - -// Players[Player_num].energy += FrameTime*Energy_regen_ratio; //slowly regenerate energy - -//MK1015: //slowly reduces player's energy & shields if over max -//MK1015: -//MK1015: if (Players[Player_num].energy > MAX_ENERGY) { -//MK1015: Players[Player_num].energy -= FrameTime/8; -//MK1015: if (Players[Player_num].energy < MAX_ENERGY) -//MK1015: Players[Player_num].energy = MAX_ENERGY; -//MK1015: } -//MK1015: -//MK1015: if (Players[Player_num].shields > MAX_SHIELDS) { -//MK1015: Players[Player_num].shields -= FrameTime/8; -//MK1015: if (Players[Player_num].shields < MAX_SHIELDS) -//MK1015: Players[Player_num].shields = MAX_SHIELDS; -//MK1015: } + Players[Player_num].time_total += FrameTime; //the never-ending march of time... + if ( Players[Player_num].time_total > i2f(3600) ) { + Players[Player_num].time_total -= i2f(3600); + Players[Player_num].hours_total++; + } } //go through this level and start any eclip sounds diff --git a/main/multi.c b/main/multi.c index f9d3231be..05ad1fd7b 100644 --- a/main/multi.c +++ b/main/multi.c @@ -1128,8 +1128,11 @@ multi_send_message_start() } } +extern fix StartingShields; + void multi_send_message_end() { + char *mytempbuf; int i, t; multi_message_index = 0; @@ -1137,7 +1140,24 @@ void multi_send_message_end() multi_send_msgsend_state(0); key_toggle_repeat(0); - if (!d_strnicmp (Network_message,"/move: ",7)) + if (!d_strnicmp (Network_message,"/Handicap: ",11)) + { + mytempbuf=&Network_message[11]; + StartingShields=atol (mytempbuf); + if (StartingShields<10) + StartingShields=10; + if (StartingShields>100) + { + sprintf (Network_message,"%s has tried to cheat!",Players[Player_num].callsign); + StartingShields=100; + } + else + sprintf (Network_message,"%s handicap is now %d",Players[Player_num].callsign,StartingShields); + + HUD_init_message(HM_MULTI, "Telling others of your handicap of %d!",StartingShields); + StartingShields=i2f(StartingShields); + } + else if (!d_strnicmp (Network_message,"/move: ",7)) { if ((Game_mode & GM_NETWORK) && (Game_mode & GM_TEAM)) { diff --git a/main/multi.h b/main/multi.h index 4ffbcd68a..a1f6de7d5 100644 --- a/main/multi.h +++ b/main/multi.h @@ -65,7 +65,7 @@ extern int multi_protocol; // set and determinate used protocol #define MULTI_PROTO_UDP 1 // UDP protocol // What version of the multiplayer protocol is this? Increment each time something drastic changes in Multiplayer without the version number changes. Can be reset to 0 each time the version of the game changes -#define MULTI_PROTO_VERSION 2 +#define MULTI_PROTO_VERSION 3 // PROTOCOL VARIABLES AND DEFINES - END diff --git a/main/player.h b/main/player.h index 1006ec6b8..9498270bd 100644 --- a/main/player.h +++ b/main/player.h @@ -31,9 +31,13 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. #define MAX_MULTI_PLAYERS MAX_PLAYERS+3 // Initial player stat values -#define MAX_ENERGY i2f(100) //100% energy to start -#define MAX_SHIELDS i2f(100) //100% shields to start -#define INITIAL_LIVES 3 //start off with 3 lives +#define INITIAL_ENERGY i2f(100) // 100% energy to start +#define INITIAL_SHIELDS i2f(100) // 100% shields to start + +#define MAX_ENERGY i2f(200) // go up to 200 +#define MAX_SHIELDS i2f(200) + +#define INITIAL_LIVES 3 // start off with 3 lives // Values for special flags #define PLAYER_FLAGS_INVULNERABLE 1 // Player is invincible diff --git a/main/powerup.c b/main/powerup.c index dcafffb8e..e2b83d5c7 100644 --- a/main/powerup.c +++ b/main/powerup.c @@ -44,9 +44,6 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. #include "editor/editor.h" #endif -#define ENERGY_MAX i2f(200) -#define SHIELD_MAX i2f(200) - int N_powerup_types = 0; powerup_type_info Powerup_info[MAX_POWERUP_TYPES]; @@ -175,10 +172,10 @@ int pick_up_energy(void) { int used=0; - if (Players[Player_num].energy < ENERGY_MAX) { + if (Players[Player_num].energy < MAX_ENERGY) { Players[Player_num].energy += 3*F1_0 + 3*F1_0*(NDL - Difficulty_level); - if (Players[Player_num].energy > ENERGY_MAX) - Players[Player_num].energy = ENERGY_MAX; + if (Players[Player_num].energy > MAX_ENERGY) + Players[Player_num].energy = MAX_ENERGY; powerup_basic(15,15,7, ENERGY_SCORE, "%s %s %d",TXT_ENERGY,TXT_BOOSTED_TO,f2ir(Players[Player_num].energy)); used=1; } else @@ -247,10 +244,10 @@ int do_powerup(object *obj) used = pick_up_energy(); break; case POW_SHIELD_BOOST: - if (Players[Player_num].shields < SHIELD_MAX) { + if (Players[Player_num].shields < MAX_SHIELDS) { Players[Player_num].shields += 3*F1_0 + 3*F1_0*(NDL - Difficulty_level); - if (Players[Player_num].shields > SHIELD_MAX) - Players[Player_num].shields = SHIELD_MAX; + if (Players[Player_num].shields > MAX_SHIELDS) + Players[Player_num].shields = MAX_SHIELDS; powerup_basic(0, 0, 15, SHIELD_SCORE, "%s %s %d",TXT_SHIELD,TXT_BOOSTED_TO,f2ir(Players[Player_num].shields)); used=1; } else