about summary refs log tree commit diff
path: root/src/game/server/game_server.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/server/game_server.cpp')
-rw-r--r--src/game/server/game_server.cpp38
1 files changed, 34 insertions, 4 deletions
diff --git a/src/game/server/game_server.cpp b/src/game/server/game_server.cpp
index 1d6b101f..5428ef5f 100644
--- a/src/game/server/game_server.cpp
+++ b/src/game/server/game_server.cpp
@@ -806,6 +806,9 @@ void player::try_respawn()
 	
 	active_weapon = WEAPON_GUN;
 	reload_timer = 0;
+
+	emote_type = EMOTE_HAPPY;
+	emote_stop = server_tick() + server_tickspeed(); 
 	
 	// Create sound and spawn effects
 	create_sound(pos, SOUND_PLAYER_SPAWN);
@@ -1407,7 +1410,7 @@ bool player::take_damage(vec2 force, int dmg, int from, int weapon)
 	
 	// do damage hit sound
 	if(from >= 0)
-		create_targetted_sound(pos, SOUND_HIT, from);
+		create_targetted_sound(players[from].pos, SOUND_HIT, from);
 			
 	// check for death
 	if(health <= 0)
@@ -1433,6 +1436,8 @@ bool player::take_damage(vec2 force, int dmg, int from, int weapon)
 	else
 		create_sound(pos, SOUND_PLAYER_PAIN_SHORT);
 
+	emote_type = EMOTE_PAIN;
+	emote_stop = server_tick() + 500 * server_tickspeed() / 1000;
 
 	// spawn blood?
 	return true;
@@ -1446,7 +1451,14 @@ void player::snap(int snaping_client)
 	player->y = (int)pos.y;
 	player->vx = (int)vel.x;
 	player->vy = (int)vel.y;
-	player->emote = EMOTE_NORMAL;
+
+	if (emote_stop < server_tick())
+	{
+		emote_type = EMOTE_NORMAL;
+		emote_stop = -1;
+	}
+
+	player->emote = emote_type;
 
 	player->latency = latency_avg;
 	player->latency_flux = latency_max-latency_min;
@@ -1472,8 +1484,8 @@ void player::snap(int snaping_client)
 	if(length(vel) > 15.0f)
 		player->emote = EMOTE_HAPPY;
 	
-	if(damage_taken_tick+50 > server_tick())
-		player->emote = EMOTE_PAIN;
+	//if(damage_taken_tick+50 > server_tick())
+	//	player->emote = EMOTE_PAIN;
 	
 	if(player->emote == EMOTE_NORMAL)
 	{
@@ -1590,6 +1602,24 @@ void powerup::tick()
 				pplayer->active_weapon = WEAPON_NINJA;
 				respawntime = data->powerupinfo[type].respawntime;
 				create_sound(pos, SOUND_PICKUP_NINJA);
+
+				// loop through all players, setting their emotes
+				entity *ents[64];
+				const int types[] = {OBJTYPE_PLAYER};
+				int num = world.find_entities(vec2(0, 0), 1000000, ents, 64, types, 1);
+				for (int i = 0; i < num; i++)
+				{
+					player *p = (player *)ents[i];
+					if (p != pplayer)
+					{
+						p->emote_type = EMOTE_SURPRISE;
+						p->emote_stop = server_tick() + server_tickspeed();
+					}
+				}
+
+				pplayer->emote_type = EMOTE_ANGRY;
+				pplayer->emote_stop = server_tick() + 1200 * server_tickspeed() / 1000;
+
 				break;
 			}
 		default: