mirror of
https://github.com/ddnet/ddnet.git
synced 2024-09-20 09:34:19 +00:00
more cleanups
This commit is contained in:
parent
5d1cb86943
commit
6c362f91eb
|
@ -5,8 +5,8 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#include <engine/e_config.h>
|
#include <engine/e_config.h> // TODO: this shouldn't be here
|
||||||
#include <engine/client/ec_font.h>
|
#include <engine/client/ec_font.h> // TODO: this shouldn't be here
|
||||||
#include <engine/e_client_interface.h>
|
#include <engine/e_client_interface.h>
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -24,8 +24,6 @@ extern "C" {
|
||||||
#include "gc_anim.h"
|
#include "gc_anim.h"
|
||||||
#include "gc_console.h"
|
#include "gc_console.h"
|
||||||
|
|
||||||
#include <GL/gl.h>
|
|
||||||
|
|
||||||
struct data_container *data = 0;
|
struct data_container *data = 0;
|
||||||
static int64 debug_firedelay = 0;
|
static int64 debug_firedelay = 0;
|
||||||
|
|
||||||
|
|
|
@ -298,28 +298,16 @@ extern "C" void modc_render()
|
||||||
render_game();
|
render_game();
|
||||||
if (console_active())
|
if (console_active())
|
||||||
console_render();
|
console_render();
|
||||||
|
|
||||||
// handle team switching
|
|
||||||
// TODO: FUGLY!!!
|
|
||||||
/*
|
|
||||||
if(config.cl_team != -10)
|
|
||||||
{
|
|
||||||
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
else // if (client_state() != CLIENTSTATE_CONNECTING && client_state() != CLIENTSTATE_LOADING)
|
else
|
||||||
{
|
{
|
||||||
menu_render();
|
menu_render();
|
||||||
if (console_active())
|
if (console_active())
|
||||||
console_render();
|
console_render();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
//config.cl_team = -10;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
extern "C" int modc_snap_input(int *data)
|
extern "C" int modc_snap_input(int *data)
|
||||||
{
|
{
|
||||||
picked_up_weapon = -1;
|
picked_up_weapon = -1;
|
||||||
|
@ -335,12 +323,12 @@ extern "C" int modc_snap_input(int *data)
|
||||||
input_target_lock = 0;
|
input_target_lock = 0;
|
||||||
|
|
||||||
if(chat_mode != CHATMODE_NONE)
|
if(chat_mode != CHATMODE_NONE)
|
||||||
input_data.state = STATE_CHATTING;
|
input_data.player_state = PLAYERSTATE_CHATTING;
|
||||||
else if(menu_active)
|
else if(menu_active)
|
||||||
input_data.state = STATE_IN_MENU;
|
input_data.player_state = PLAYERSTATE_IN_MENU;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
input_data.state = STATE_PLAYING;
|
input_data.player_state = PLAYERSTATE_PLAYING;
|
||||||
|
|
||||||
// TODO: this doesn't feel too pretty... look into it?
|
// TODO: this doesn't feel too pretty... look into it?
|
||||||
if (console_active())
|
if (console_active())
|
||||||
|
|
|
@ -434,7 +434,7 @@ void render_player(
|
||||||
// render the tee
|
// render the tee
|
||||||
render_tee(&state, &render_info, player.emote, direction, position);
|
render_tee(&state, &render_info, player.emote, direction, position);
|
||||||
|
|
||||||
if(player.state == STATE_CHATTING)
|
if(player.player_state == PLAYERSTATE_CHATTING)
|
||||||
{
|
{
|
||||||
gfx_texture_set(data->images[IMAGE_EMOTICONS].id);
|
gfx_texture_set(data->images[IMAGE_EMOTICONS].id);
|
||||||
gfx_quads_begin();
|
gfx_quads_begin();
|
||||||
|
|
|
@ -81,10 +81,10 @@ enum
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
STATE_UNKNOWN=0,
|
PLAYERSTATE_UNKNOWN=0,
|
||||||
STATE_PLAYING,
|
PLAYERSTATE_PLAYING,
|
||||||
STATE_IN_MENU,
|
PLAYERSTATE_IN_MENU,
|
||||||
STATE_CHATTING,
|
PLAYERSTATE_CHATTING,
|
||||||
|
|
||||||
GAMETYPE_DM=0,
|
GAMETYPE_DM=0,
|
||||||
GAMETYPE_TDM,
|
GAMETYPE_TDM,
|
||||||
|
@ -103,7 +103,8 @@ struct player_input
|
||||||
int fire;
|
int fire;
|
||||||
int hook;
|
int hook;
|
||||||
int blink;
|
int blink;
|
||||||
int state;
|
|
||||||
|
int player_state;
|
||||||
|
|
||||||
int wanted_weapon;
|
int wanted_weapon;
|
||||||
int next_weapon;
|
int next_weapon;
|
||||||
|
@ -193,7 +194,7 @@ struct obj_player_core
|
||||||
// info about the player that is only needed when it's on screen
|
// info about the player that is only needed when it's on screen
|
||||||
struct obj_player_character : public obj_player_core
|
struct obj_player_character : public obj_player_core
|
||||||
{
|
{
|
||||||
int state;
|
int player_state;
|
||||||
|
|
||||||
int health;
|
int health;
|
||||||
int armor;
|
int armor;
|
||||||
|
|
|
@ -216,19 +216,6 @@ class player : public entity
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static const int phys_size = 28;
|
static const int phys_size = 28;
|
||||||
|
|
||||||
enum // what are these?
|
|
||||||
{
|
|
||||||
MODIFIER_RETURNFLAGS_OVERRIDEVELOCITY = 1 << 0,
|
|
||||||
MODIFIER_RETURNFLAGS_OVERRIDEPOSITION = 1 << 1,
|
|
||||||
MODIFIER_RETURNFLAGS_OVERRIDEGRAVITY = 1 << 2,
|
|
||||||
|
|
||||||
MODIFIER_RETURNFLAGS_NOHOOK = 1 << 3,
|
|
||||||
|
|
||||||
|
|
||||||
WEAPONSTAGE_SNIPER_NEUTRAL = 0,
|
|
||||||
WEAPONSTAGE_SNIPER_CHARGING = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
// weapon info
|
// weapon info
|
||||||
entity* hitobjects[10];
|
entity* hitobjects[10];
|
||||||
|
@ -238,23 +225,21 @@ public:
|
||||||
int ammoregenstart;
|
int ammoregenstart;
|
||||||
int ammo;
|
int ammo;
|
||||||
int ammocost;
|
int ammocost;
|
||||||
int weaponstage;
|
|
||||||
bool got;
|
bool got;
|
||||||
} weapons[NUM_WEAPONS];
|
} weapons[NUM_WEAPONS];
|
||||||
|
|
||||||
int active_weapon;
|
int active_weapon;
|
||||||
int last_weapon;
|
int last_weapon;
|
||||||
int wanted_weapon;
|
int wanted_weapon;
|
||||||
int reload_timer;
|
int reload_timer;
|
||||||
int attack_tick;
|
int attack_tick;
|
||||||
|
|
||||||
int sniper_chargetick;
|
|
||||||
|
|
||||||
int damage_taken;
|
int damage_taken;
|
||||||
|
|
||||||
int emote_type;
|
int emote_type;
|
||||||
int emote_stop;
|
int emote_stop;
|
||||||
|
|
||||||
int last_action;
|
int last_action; // last tick that the player took any action ie some input
|
||||||
|
|
||||||
//
|
//
|
||||||
int client_id;
|
int client_id;
|
||||||
|
@ -263,7 +248,6 @@ public:
|
||||||
int color_body;
|
int color_body;
|
||||||
int color_feet;
|
int color_feet;
|
||||||
|
|
||||||
|
|
||||||
// these are non-heldback inputs
|
// these are non-heldback inputs
|
||||||
player_input latest_previnput;
|
player_input latest_previnput;
|
||||||
player_input latest_input;
|
player_input latest_input;
|
||||||
|
@ -280,17 +264,18 @@ public:
|
||||||
int armor;
|
int armor;
|
||||||
|
|
||||||
// ninja
|
// ninja
|
||||||
vec2 activationdir;
|
struct
|
||||||
int ninja_activationtick;
|
{
|
||||||
int extrapowerflags;
|
vec2 activationdir;
|
||||||
int currentcooldown;
|
int activationtick;
|
||||||
int currentactivation;
|
int currentcooldown;
|
||||||
int currentmovetime;
|
int currentmovetime;
|
||||||
|
} ninja;
|
||||||
|
|
||||||
//
|
//
|
||||||
int score;
|
int score;
|
||||||
int team;
|
int team;
|
||||||
int state;
|
int player_state; // if the client is chatting, accessing a menu or so
|
||||||
|
|
||||||
bool spawning;
|
bool spawning;
|
||||||
bool dead;
|
bool dead;
|
||||||
|
@ -325,8 +310,6 @@ public:
|
||||||
|
|
||||||
int handle_weapons();
|
int handle_weapons();
|
||||||
int handle_ninja();
|
int handle_ninja();
|
||||||
int handle_sniper();
|
|
||||||
int handle_bomb();
|
|
||||||
|
|
||||||
virtual void tick();
|
virtual void tick();
|
||||||
virtual void tick_defered();
|
virtual void tick_defered();
|
||||||
|
|
|
@ -457,7 +457,6 @@ void player::init()
|
||||||
proximity_radius = phys_size;
|
proximity_radius = phys_size;
|
||||||
client_id = -1;
|
client_id = -1;
|
||||||
team = -1; // -1 == spectator
|
team = -1; // -1 == spectator
|
||||||
extrapowerflags = 0;
|
|
||||||
|
|
||||||
latency_accum = 0;
|
latency_accum = 0;
|
||||||
latency_accum_min = 0;
|
latency_accum_min = 0;
|
||||||
|
@ -481,7 +480,7 @@ void player::reset()
|
||||||
die_tick = 0;
|
die_tick = 0;
|
||||||
die_pos = vec2(0,0);
|
die_pos = vec2(0,0);
|
||||||
damage_taken = 0;
|
damage_taken = 0;
|
||||||
state = STATE_UNKNOWN;
|
player_state = PLAYERSTATE_UNKNOWN;
|
||||||
|
|
||||||
mem_zero(&input, sizeof(input));
|
mem_zero(&input, sizeof(input));
|
||||||
mem_zero(&previnput, sizeof(previnput));
|
mem_zero(&previnput, sizeof(previnput));
|
||||||
|
@ -493,9 +492,8 @@ void player::reset()
|
||||||
damage_taken_tick = 0;
|
damage_taken_tick = 0;
|
||||||
attack_tick = 0;
|
attack_tick = 0;
|
||||||
numobjectshit = 0;
|
numobjectshit = 0;
|
||||||
ninja_activationtick = 0;
|
|
||||||
sniper_chargetick = -1;
|
mem_zero(&ninja, sizeof(ninja));
|
||||||
currentmovetime = 0;
|
|
||||||
|
|
||||||
active_weapon = WEAPON_GUN;
|
active_weapon = WEAPON_GUN;
|
||||||
last_weapon = WEAPON_HAMMER;
|
last_weapon = WEAPON_HAMMER;
|
||||||
|
@ -687,13 +685,11 @@ void player::try_respawn()
|
||||||
armor = 0;
|
armor = 0;
|
||||||
jumped = 0;
|
jumped = 0;
|
||||||
|
|
||||||
ninja_activationtick = 0;
|
mem_zero(&ninja, sizeof(ninja));
|
||||||
sniper_chargetick = -1;
|
|
||||||
currentcooldown = 0;
|
|
||||||
|
|
||||||
dead = false;
|
dead = false;
|
||||||
set_flag(entity::FLAG_PHYSICS);
|
set_flag(entity::FLAG_PHYSICS);
|
||||||
state = STATE_PLAYING;
|
player_state = PLAYERSTATE_PLAYING;
|
||||||
|
|
||||||
core.hook_state = HOOK_IDLE;
|
core.hook_state = HOOK_IDLE;
|
||||||
|
|
||||||
|
@ -735,7 +731,7 @@ int player::handle_ninja()
|
||||||
{
|
{
|
||||||
vec2 direction = normalize(vec2(latest_input.target_x, latest_input.target_y));
|
vec2 direction = normalize(vec2(latest_input.target_x, latest_input.target_y));
|
||||||
|
|
||||||
if ((server_tick() - ninja_activationtick) > (data->weapons[WEAPON_NINJA].duration * server_tickspeed() / 1000))
|
if ((server_tick() - ninja.activationtick) > (data->weapons[WEAPON_NINJA].duration * server_tickspeed() / 1000))
|
||||||
{
|
{
|
||||||
// time's up, return
|
// time's up, return
|
||||||
weapons[WEAPON_NINJA].got = false;
|
weapons[WEAPON_NINJA].got = false;
|
||||||
|
@ -745,13 +741,13 @@ int player::handle_ninja()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if it should activate
|
// Check if it should activate
|
||||||
if (count_input(latest_previnput.fire, latest_input.fire).presses && (server_tick() > currentcooldown))
|
if (count_input(latest_previnput.fire, latest_input.fire).presses && (server_tick() > ninja.currentcooldown))
|
||||||
{
|
{
|
||||||
// ok then, activate ninja
|
// ok then, activate ninja
|
||||||
attack_tick = server_tick();
|
attack_tick = server_tick();
|
||||||
activationdir = direction;
|
ninja.activationdir = direction;
|
||||||
currentmovetime = data->weapons[WEAPON_NINJA].movetime * server_tickspeed() / 1000;
|
ninja.currentmovetime = data->weapons[WEAPON_NINJA].movetime * server_tickspeed() / 1000;
|
||||||
currentcooldown = data->weapons[WEAPON_NINJA].firedelay * server_tickspeed() / 1000 + server_tick();
|
ninja.currentcooldown = data->weapons[WEAPON_NINJA].firedelay * server_tickspeed() / 1000 + server_tick();
|
||||||
|
|
||||||
// reset hit objects
|
// reset hit objects
|
||||||
numobjectshit = 0;
|
numobjectshit = 0;
|
||||||
|
@ -763,24 +759,24 @@ int player::handle_ninja()
|
||||||
//release_hooks();
|
//release_hooks();
|
||||||
}
|
}
|
||||||
|
|
||||||
currentmovetime--;
|
ninja.currentmovetime--;
|
||||||
|
|
||||||
if (currentmovetime == 0)
|
if (ninja.currentmovetime == 0)
|
||||||
{
|
{
|
||||||
// reset player velocity
|
// reset player velocity
|
||||||
core.vel *= 0.2f;
|
core.vel *= 0.2f;
|
||||||
//return MODIFIER_RETURNFLAGS_OVERRIDEWEAPON;
|
//return MODIFIER_RETURNFLAGS_OVERRIDEWEAPON;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (currentmovetime > 0)
|
if (ninja.currentmovetime > 0)
|
||||||
{
|
{
|
||||||
// Set player velocity
|
// Set player velocity
|
||||||
core.vel = activationdir * data->weapons[WEAPON_NINJA].velocity;
|
core.vel = ninja.activationdir * data->weapons[WEAPON_NINJA].velocity;
|
||||||
vec2 oldpos = pos;
|
vec2 oldpos = pos;
|
||||||
move_box(&core.pos, &core.vel, vec2(phys_size, phys_size), 0.0f);
|
move_box(&core.pos, &core.vel, vec2(phys_size, phys_size), 0.0f);
|
||||||
// reset velocity so the client doesn't predict stuff
|
// reset velocity so the client doesn't predict stuff
|
||||||
core.vel = vec2(0.0f,0.0f);
|
core.vel = vec2(0.0f,0.0f);
|
||||||
if ((currentmovetime % 2) == 0)
|
if ((ninja.currentmovetime % 2) == 0)
|
||||||
{
|
{
|
||||||
create_smoke(pos);
|
create_smoke(pos);
|
||||||
}
|
}
|
||||||
|
@ -821,114 +817,12 @@ int player::handle_ninja()
|
||||||
ents[i]->take_damage(vec2(0,10.0f), data->weapons[WEAPON_NINJA].meleedamage, client_id,WEAPON_NINJA);
|
ents[i]->take_damage(vec2(0,10.0f), data->weapons[WEAPON_NINJA].meleedamage, client_id,WEAPON_NINJA);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return MODIFIER_RETURNFLAGS_OVERRIDEVELOCITY | MODIFIER_RETURNFLAGS_OVERRIDEPOSITION | MODIFIER_RETURNFLAGS_OVERRIDEGRAVITY;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int player::handle_sniper()
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
struct input_count button = count_input(previnput.fire, input.fire);
|
|
||||||
|
|
||||||
bool must_release = false;
|
|
||||||
int current_load = (server_tick()-sniper_chargetick) / server_tickspeed() + 1;
|
|
||||||
|
|
||||||
if(input.fire&1)
|
|
||||||
{
|
|
||||||
if(sniper_chargetick == -1)
|
|
||||||
{
|
|
||||||
// start charge
|
|
||||||
sniper_chargetick = server_tick();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(current_load > weapons[WEAPON_SNIPER].ammo+3)
|
|
||||||
must_release = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(button.releases || must_release)
|
|
||||||
{
|
|
||||||
vec2 direction = normalize(vec2(input.target_x, input.target_y));
|
|
||||||
|
|
||||||
// released
|
|
||||||
sniper_chargetick = -1;
|
|
||||||
|
|
||||||
if(current_load > weapons[WEAPON_SNIPER].ammo)
|
|
||||||
current_load = weapons[WEAPON_SNIPER].ammo;
|
|
||||||
|
|
||||||
weapons[WEAPON_SNIPER].ammo -= current_load;
|
|
||||||
|
|
||||||
new projectile(projectile::WEAPON_PROJECTILETYPE_SNIPER,
|
|
||||||
client_id, pos+vec2(0,0), direction*50.0f,
|
|
||||||
100, this, current_load, 0, 0, -1, WEAPON_SNIPER);
|
|
||||||
create_sound(pos, SOUND_SNIPER_FIRE);
|
|
||||||
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
if(button.releases)
|
|
||||||
{
|
|
||||||
vec2 direction = normalize(vec2(input.target_x, input.target_y));
|
|
||||||
// Check if we were charging, if so fire
|
|
||||||
if (weapons[WEAPON_SNIPER].weaponstage >= WEAPONSTAGE_SNIPER_CHARGING)
|
|
||||||
{
|
|
||||||
new projectile(projectile::WEAPON_PROJECTILETYPE_SNIPER,
|
|
||||||
client_id, pos+vec2(0,0), direction*50.0f,
|
|
||||||
100 + weapons[WEAPON_SNIPER].weaponstage * 20,this, weapons[WEAPON_SNIPER].weaponstage, 0, 0, -1, WEAPON_SNIPER);
|
|
||||||
create_sound(pos, SOUND_SNIPER_FIRE);
|
|
||||||
}
|
|
||||||
// Add blowback
|
|
||||||
core.vel = -direction * 10.0f * weapons[WEAPON_SNIPER].weaponstage;
|
|
||||||
|
|
||||||
// update ammo and stuff
|
|
||||||
weapons[WEAPON_SNIPER].ammo = max(0,weapons[WEAPON_SNIPER].ammo - weapons[WEAPON_SNIPER].weaponstage);
|
|
||||||
weapons[WEAPON_SNIPER].weaponstage = WEAPONSTAGE_SNIPER_NEUTRAL;
|
|
||||||
weapons[WEAPON_SNIPER].chargetick = 0;
|
|
||||||
}
|
|
||||||
else if (input.fire & 1)
|
|
||||||
{
|
|
||||||
// Charge!! (if we are on the ground)
|
|
||||||
if (is_grounded() && weapons[WEAPON_SNIPER].ammo > 0)
|
|
||||||
{
|
|
||||||
if (!weapons[WEAPON_SNIPER].chargetick)
|
|
||||||
{
|
|
||||||
weapons[WEAPON_SNIPER].chargetick = server_tick();
|
|
||||||
dbg_msg("game", "Chargetick='%d:'", server_tick());
|
|
||||||
}
|
|
||||||
if ((server_tick() - weapons[WEAPON_SNIPER].chargetick) > server_tickspeed() * data->weapons[active_weapon].chargetime)
|
|
||||||
{
|
|
||||||
if (weapons[WEAPON_SNIPER].ammo > weapons[WEAPON_SNIPER].weaponstage)
|
|
||||||
{
|
|
||||||
weapons[WEAPON_SNIPER].weaponstage++;
|
|
||||||
weapons[WEAPON_SNIPER].chargetick = server_tick();
|
|
||||||
}
|
|
||||||
else if ((server_tick() - weapons[WEAPON_SNIPER].chargetick) > server_tickspeed() * data->weapons[active_weapon].overchargetime)
|
|
||||||
{
|
|
||||||
// Ooopsie, weapon exploded
|
|
||||||
create_explosion(pos, client_id, WEAPON_SNIPER, false);
|
|
||||||
create_sound(pos, SOUND_ROCKET_EXPLODE);
|
|
||||||
// remove this weapon and change weapon to gun
|
|
||||||
weapons[WEAPON_SNIPER].got = false;
|
|
||||||
weapons[WEAPON_SNIPER].ammo = 0;
|
|
||||||
last_weapon = active_weapon;
|
|
||||||
active_weapon = WEAPON_GUN;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// While charging, don't move
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
else if (weapons[WEAPON_SNIPER].weaponstage)
|
|
||||||
weapons[WEAPON_SNIPER].weaponstage = WEAPONSTAGE_SNIPER_NEUTRAL;
|
|
||||||
}*/
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int player::handle_weapons()
|
int player::handle_weapons()
|
||||||
{
|
{
|
||||||
vec2 direction = normalize(vec2(latest_input.target_x, latest_input.target_y));
|
vec2 direction = normalize(vec2(latest_input.target_x, latest_input.target_y));
|
||||||
|
@ -1000,12 +894,6 @@ int player::handle_weapons()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// don't update other weapons while sniper is active
|
|
||||||
/*
|
|
||||||
if (active_weapon == WEAPON_SNIPER)
|
|
||||||
return handle_sniper();
|
|
||||||
*/
|
|
||||||
|
|
||||||
if(reload_timer == 0)
|
if(reload_timer == 0)
|
||||||
{
|
{
|
||||||
bool fullauto = false;
|
bool fullauto = false;
|
||||||
|
@ -1257,7 +1145,7 @@ void player::tick()
|
||||||
// handle weapons
|
// handle weapons
|
||||||
handle_weapons();
|
handle_weapons();
|
||||||
|
|
||||||
state = input.state;
|
player_state = input.player_state;
|
||||||
|
|
||||||
// Previnput
|
// Previnput
|
||||||
previnput = input;
|
previnput = input;
|
||||||
|
@ -1468,7 +1356,6 @@ void player::snap(int snaping_client)
|
||||||
character->health = 0;
|
character->health = 0;
|
||||||
character->armor = 0;
|
character->armor = 0;
|
||||||
character->weapon = active_weapon;
|
character->weapon = active_weapon;
|
||||||
character->weaponstage = weapons[active_weapon].weaponstage;
|
|
||||||
character->attacktick = attack_tick;
|
character->attacktick = attack_tick;
|
||||||
|
|
||||||
if(client_id == snaping_client)
|
if(client_id == snaping_client)
|
||||||
|
@ -1492,7 +1379,7 @@ void player::snap(int snaping_client)
|
||||||
character->emote = EMOTE_BLINK;
|
character->emote = EMOTE_BLINK;
|
||||||
}
|
}
|
||||||
|
|
||||||
character->state = state;
|
character->player_state = player_state;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1589,7 +1476,7 @@ void powerup::tick()
|
||||||
case POWERUP_NINJA:
|
case POWERUP_NINJA:
|
||||||
{
|
{
|
||||||
// activate ninja on target player
|
// activate ninja on target player
|
||||||
pplayer->ninja_activationtick = server_tick();
|
pplayer->ninja.activationtick = server_tick();
|
||||||
pplayer->weapons[WEAPON_NINJA].got = true;
|
pplayer->weapons[WEAPON_NINJA].got = true;
|
||||||
pplayer->last_weapon = pplayer->active_weapon;
|
pplayer->last_weapon = pplayer->active_weapon;
|
||||||
pplayer->active_weapon = WEAPON_NINJA;
|
pplayer->active_weapon = WEAPON_NINJA;
|
||||||
|
|
Loading…
Reference in a new issue