Introduced INITIAL_ENERGY and INITIAL_SHIELDS defines from d2x and on that way added handicap feature for multiplayer as well; incremented multi proto version

This commit is contained in:
zicodxx 2012-06-18 01:45:17 +02:00
parent effc8c3fc4
commit 63fe8ddc37
7 changed files with 56 additions and 51 deletions

View file

@ -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
--------

View file

@ -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)";

View file

@ -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<MAX_PRIMARY_WEAPONS; i++)
// if (Players[Player_num].primary_ammo[i] < Default_primary_ammo_level[i])
@ -359,8 +361,8 @@ void init_player_stats_new_ship(ubyte pnum)
Dead_player_camera = 0;
}
Players[pnum].energy = MAX_ENERGY;
Players[pnum].shields = MAX_SHIELDS;
Players[pnum].energy = INITIAL_ENERGY;
Players[pnum].shields = StartingShields;
Players[pnum].laser_level = 0;
Players[pnum].killer_objnum = -1;
Players[pnum].hostages_on_board = 0;
@ -436,37 +438,17 @@ void DoGameOver()
//update various information about the player
void update_player_stats()
{
// I took out this 'if' because it was causing the reactor invul time to be
// off for players that sit in the death screen. -JS jul 6,95
// if (!Player_exploded) {
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_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

View file

@ -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))
{

View file

@ -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

View file

@ -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

View file

@ -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