From 977038200788d576b869c6ac6a3036488f8486fb Mon Sep 17 00:00:00 2001 From: def Date: Thu, 9 Jan 2014 19:00:41 +0100 Subject: [PATCH 1/5] New Jetpack animation --- src/game/server/entities/character.cpp | 67 +++++++++++++++----------- 1 file changed, 39 insertions(+), 28 deletions(-) diff --git a/src/game/server/entities/character.cpp b/src/game/server/entities/character.cpp index ae8854b83..e9a9938a5 100644 --- a/src/game/server/entities/character.cpp +++ b/src/game/server/entities/character.cpp @@ -383,36 +383,39 @@ void CCharacter::FireWeapon() case WEAPON_GUN: { - CProjectile *pProj = new CProjectile - ( - GameWorld(), - WEAPON_GUN,//Type - m_pPlayer->GetCID(),//Owner - ProjStartPos,//Pos - Direction,//Dir - (int)(Server()->TickSpeed()*GameServer()->Tuning()->m_GunLifetime),//Span - 0,//Freeze - 0,//Explosive - 0,//Force - -1,//SoundImpact - WEAPON_GUN//Weapon - ); - - // pack the Projectile and send it to the client Directly - CNetObj_Projectile p; - pProj->FillInfo(&p); - - CMsgPacker Msg(NETMSGTYPE_SV_EXTRAPROJECTILE); - Msg.AddInt(1); - for(unsigned i = 0; i < sizeof(CNetObj_Projectile)/sizeof(int); i++) - Msg.AddInt(((int *)&p)[i]); - - Server()->SendMsg(&Msg, 0, m_pPlayer->GetCID()); - if (m_Jetpack) + { TakeDamage(Direction * -1.0f * (g_Config.m_SvJetpack / 100.0f), g_pData->m_Weapons.m_Hammer.m_pBase->m_Damage, m_pPlayer->GetCID(), m_ActiveWeapon); + } + else + { + CProjectile *pProj = new CProjectile + ( + GameWorld(), + WEAPON_GUN,//Type + m_pPlayer->GetCID(),//Owner + ProjStartPos,//Pos + Direction,//Dir + (int)(Server()->TickSpeed()*GameServer()->Tuning()->m_GunLifetime),//Span + 0,//Freeze + 0,//Explosive + 0,//Force + -1,//SoundImpact + WEAPON_GUN//Weapon + ); - GameServer()->CreateSound(m_Pos, SOUND_GUN_FIRE, Teams()->TeamMask(Team(), -1, m_pPlayer->GetCID())); + // pack the Projectile and send it to the client Directly + CNetObj_Projectile p; + pProj->FillInfo(&p); + + CMsgPacker Msg(NETMSGTYPE_SV_EXTRAPROJECTILE); + Msg.AddInt(1); + for(unsigned i = 0; i < sizeof(CNetObj_Projectile)/sizeof(int); i++) + Msg.AddInt(((int *)&p)[i]); + + Server()->SendMsg(&Msg, 0, m_pPlayer->GetCID()); + GameServer()->CreateSound(m_Pos, SOUND_GUN_FIRE, Teams()->TeamMask(Team(), -1, m_pPlayer->GetCID())); + } } break; case WEAPON_SHOTGUN: @@ -573,7 +576,7 @@ void CCharacter::GiveNinja() if (!m_FreezeTime) m_aWeapons[WEAPON_NINJA].m_Ammo = -1; if (m_ActiveWeapon != WEAPON_NINJA) - m_LastWeapon = m_ActiveWeapon; + m_LastWeapon = m_ActiveWeapon; m_ActiveWeapon = WEAPON_NINJA; if(!m_aWeapons[WEAPON_NINJA].m_Got) @@ -918,6 +921,7 @@ bool CCharacter::TakeDamage(vec2 Force, int Dmg, int From, int Weapon) else GameServer()->CreateSound(m_Pos, SOUND_PLAYER_PAIN_SHORT);*/ + if (!m_Jetpack || m_ActiveWeapon != WEAPON_GUN) m_EmoteType = EMOTE_PAIN; m_EmoteStop = Server()->Tick() + 500 * Server()->TickSpeed() / 1000; @@ -1009,6 +1013,13 @@ void CCharacter::Snap(int SnappingClient) pCharacter->m_Weapon = WEAPON_NINJA; pCharacter->m_AmmoCount = 0; } + else if (m_Jetpack && m_ActiveWeapon == WEAPON_GUN) + { + if (pCharacter->m_Emote == EMOTE_NORMAL) + pCharacter->m_Emote = EMOTE_HAPPY, + pCharacter->m_Weapon = WEAPON_NINJA; + pCharacter->m_AmmoCount = 10; + } else pCharacter->m_Weapon = m_ActiveWeapon; pCharacter->m_AttackTick = m_AttackTick; From 86468f2c06a248e363999ad9902482fc3efac06f Mon Sep 17 00:00:00 2001 From: def Date: Thu, 9 Jan 2014 19:50:37 +0100 Subject: [PATCH 2/5] Emote fix --- src/game/server/entities/character.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/game/server/entities/character.cpp b/src/game/server/entities/character.cpp index e9a9938a5..50c0ae6b6 100644 --- a/src/game/server/entities/character.cpp +++ b/src/game/server/entities/character.cpp @@ -922,8 +922,10 @@ bool CCharacter::TakeDamage(vec2 Force, int Dmg, int From, int Weapon) GameServer()->CreateSound(m_Pos, SOUND_PLAYER_PAIN_SHORT);*/ if (!m_Jetpack || m_ActiveWeapon != WEAPON_GUN) - m_EmoteType = EMOTE_PAIN; - m_EmoteStop = Server()->Tick() + 500 * Server()->TickSpeed() / 1000; + { + m_EmoteType = EMOTE_PAIN; + m_EmoteStop = Server()->Tick() + 500 * Server()->TickSpeed() / 1000; + } vec2 Temp = m_Core.m_Vel + Force; if(Temp.x > 0 && ((m_TileIndex == TILE_STOP && m_TileFlags == ROTATION_270) || (m_TileIndexL == TILE_STOP && m_TileFlagsL == ROTATION_270) || (m_TileIndexL == TILE_STOPS && (m_TileFlagsL == ROTATION_90 || m_TileFlagsL ==ROTATION_270)) || (m_TileIndexL == TILE_STOPA) || (m_TileFIndex == TILE_STOP && m_TileFFlags == ROTATION_270) || (m_TileFIndexL == TILE_STOP && m_TileFFlagsL == ROTATION_270) || (m_TileFIndexL == TILE_STOPS && (m_TileFFlagsL == ROTATION_90 || m_TileFFlagsL == ROTATION_270)) || (m_TileFIndexL == TILE_STOPA) || (m_TileSIndex == TILE_STOP && m_TileSFlags == ROTATION_270) || (m_TileSIndexL == TILE_STOP && m_TileSFlagsL == ROTATION_270) || (m_TileSIndexL == TILE_STOPS && (m_TileSFlagsL == ROTATION_90 || m_TileSFlagsL == ROTATION_270)) || (m_TileSIndexL == TILE_STOPA))) @@ -1015,8 +1017,7 @@ void CCharacter::Snap(int SnappingClient) } else if (m_Jetpack && m_ActiveWeapon == WEAPON_GUN) { - if (pCharacter->m_Emote == EMOTE_NORMAL) - pCharacter->m_Emote = EMOTE_HAPPY, + pCharacter->m_Emote = EMOTE_HAPPY, pCharacter->m_Weapon = WEAPON_NINJA; pCharacter->m_AmmoCount = 10; } From 9112f1e5260169d8cc5a8b71647c654330eaa63e Mon Sep 17 00:00:00 2001 From: def Date: Thu, 9 Jan 2014 21:08:03 +0100 Subject: [PATCH 3/5] Fix stupid bug --- src/engine/server/server.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/server/server.cpp b/src/engine/server/server.cpp index 06bc9c3ad..cc364fa46 100644 --- a/src/engine/server/server.cpp +++ b/src/engine/server/server.cpp @@ -1250,7 +1250,7 @@ void CServer::SendServerInfo(const NETADDR *pAddr, int Token, bool Extended, int for(i = 0; i < MAX_CLIENTS; i++) { - if(1 || (m_aClients[i].m_State != CClient::STATE_EMPTY)) + if(m_aClients[i].m_State != CClient::STATE_EMPTY)) { if (Skip-- > 0) continue; From 7b81946dd6753664d3183c6f90d1cce29f76f695 Mon Sep 17 00:00:00 2001 From: def Date: Thu, 9 Jan 2014 21:08:50 +0100 Subject: [PATCH 4/5] oops --- src/engine/server/server.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engine/server/server.cpp b/src/engine/server/server.cpp index cc364fa46..a4b2c6a87 100644 --- a/src/engine/server/server.cpp +++ b/src/engine/server/server.cpp @@ -1250,7 +1250,7 @@ void CServer::SendServerInfo(const NETADDR *pAddr, int Token, bool Extended, int for(i = 0; i < MAX_CLIENTS; i++) { - if(m_aClients[i].m_State != CClient::STATE_EMPTY)) + if(m_aClients[i].m_State != CClient::STATE_EMPTY) { if (Skip-- > 0) continue; From 7a3a8f1485ecac2f4676011929fef2c0bc0db536 Mon Sep 17 00:00:00 2001 From: def Date: Thu, 9 Jan 2014 21:57:08 +0100 Subject: [PATCH 5/5] Fix doors in team 0 for solo server --- src/game/server/entities/character.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/game/server/entities/character.cpp b/src/game/server/entities/character.cpp index 50c0ae6b6..6cd467415 100644 --- a/src/game/server/entities/character.cpp +++ b/src/game/server/entities/character.cpp @@ -812,7 +812,7 @@ void CCharacter::Die(int Killer, int Weapon) Server()->SendPackMsg(&Msg, MSGFLAG_VITAL, -1); // reset switches if we are the last player in team to prevent door opening cheat - if (Team() >= TEAM_FLOCK && Team() < TEAM_SUPER && (Teams()->Count(Team()) < 2 || Teams()->TeamLocked(Team())) && GameServer()->Collision()->m_NumSwitchers > 0) { + if ((Team() == TEAM_FLOCK && g_Config.m_SvTeam == 3) || (Team() > TEAM_FLOCK && Team() < TEAM_SUPER && (Teams()->Count(Team()) < 2 || Teams()->TeamLocked(Team())) && GameServer()->Collision()->m_NumSwitchers > 0)) { for (int i = 0; i < GameServer()->Collision()->m_NumSwitchers+1; ++i) { GameServer()->Collision()->m_pSwitchers[i].m_Status[Team()] = true; GameServer()->Collision()->m_pSwitchers[i].m_EndTick[Team()] = 0;