From 2af9d9f4234174d43269a22637ac4ea404584a87 Mon Sep 17 00:00:00 2001 From: def Date: Sat, 11 Jan 2014 13:59:20 +0100 Subject: [PATCH] Switchable ninjajetpack --- src/game/server/ddracechat.cpp | 15 +++++++++++++++ src/game/server/ddracechat.h | 1 + src/game/server/entities/character.cpp | 4 ++-- src/game/server/entities/character.h | 1 + src/game/server/gamecontext.h | 1 + src/game/server/player.cpp | 1 + src/game/server/player.h | 1 + 7 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/game/server/ddracechat.cpp b/src/game/server/ddracechat.cpp index 9611af611..02d69a27c 100644 --- a/src/game/server/ddracechat.cpp +++ b/src/game/server/ddracechat.cpp @@ -880,6 +880,21 @@ void CGameContext::ConEyeEmote(IConsole::IResult *pResult, void *pUserData) } } +void CGameContext::ConNinjaJetpack(IConsole::IResult *pResult, void *pUserData) +{ + CGameContext *pSelf = (CGameContext *) pUserData; + if (!CheckClientID(pResult->m_ClientID)) + return; + + CPlayer *pPlayer = pSelf->m_apPlayers[pResult->m_ClientID]; + if (!pPlayer) + return; + if (pResult->NumArguments()) + pPlayer->m_NinjaJetpack = pResult->GetInteger(0); + else + pPlayer->m_NinjaJetpack = !pPlayer->m_NinjaJetpack; +} + void CGameContext::ConShowOthers(IConsole::IResult *pResult, void *pUserData) { CGameContext *pSelf = (CGameContext *) pUserData; diff --git a/src/game/server/ddracechat.h b/src/game/server/ddracechat.h index b0c309c9c..5e2753801 100644 --- a/src/game/server/ddracechat.h +++ b/src/game/server/ddracechat.h @@ -29,6 +29,7 @@ CHAT_COMMAND("lock", "?i", CFGFLAG_CHAT|CFGFLAG_SERVER, ConLockTeam, this, "Lock CHAT_COMMAND("top5team", "?i", CFGFLAG_CHAT|CFGFLAG_SERVER, ConTeamTop5, this, "Shows five team ranks of the ladder beginning with rank i (1 by default)") CHAT_COMMAND("top5", "?i", CFGFLAG_CHAT|CFGFLAG_SERVER, ConTop5, this, "Shows five ranks of the ladder beginning with rank i (1 by default)") CHAT_COMMAND("showothers", "?i", CFGFLAG_CHAT|CFGFLAG_SERVER, ConShowOthers, this, "Whether to showplayers from other teams or not (off by default), optional i = 0 for off else for on") +CHAT_COMMAND("ninjajetpack", "?i", CFGFLAG_CHAT|CFGFLAG_SERVER, ConNinjaJetpack, this, "Whether to showplayers from other teams or not (off by default), optional i = 0 for off else for on") CHAT_COMMAND("saytime", "", CFGFLAG_CHAT|CFGFLAG_SERVER, ConSayTime, this, "Privately messages you your current time in this current running race") CHAT_COMMAND("saytimeall", "", CFGFLAG_CHAT|CFGFLAG_SERVER, ConSayTimeAll, this, "Publicly messages everyone your current time in this current running race") CHAT_COMMAND("time", "", CFGFLAG_CHAT|CFGFLAG_SERVER, ConTime, this, "Privately shows you your current time in this current running race in the broadcast message") diff --git a/src/game/server/entities/character.cpp b/src/game/server/entities/character.cpp index c65968d95..3384d8225 100644 --- a/src/game/server/entities/character.cpp +++ b/src/game/server/entities/character.cpp @@ -387,7 +387,7 @@ void CCharacter::FireWeapon() { 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 + if (!m_Jetpack || !m_pPlayer->m_NinjaJetpack) { CProjectile *pProj = new CProjectile ( @@ -1015,7 +1015,7 @@ void CCharacter::Snap(int SnappingClient) pCharacter->m_Weapon = WEAPON_NINJA; pCharacter->m_AmmoCount = 0; } - else if (m_Jetpack && m_ActiveWeapon == WEAPON_GUN) + else if (m_pPlayer->m_NinjaJetpack && m_Jetpack && m_ActiveWeapon == WEAPON_GUN) { pCharacter->m_Emote = EMOTE_HAPPY, pCharacter->m_Weapon = WEAPON_NINJA; diff --git a/src/game/server/entities/character.h b/src/game/server/entities/character.h index 6c4b01b7d..55715d776 100644 --- a/src/game/server/entities/character.h +++ b/src/game/server/entities/character.h @@ -162,6 +162,7 @@ public: bool m_Super; bool m_SuperJump; bool m_Jetpack; + bool m_NinjaJetpack; int m_TeamBeforeSuper; int m_FreezeTime; int m_FreezeTick; diff --git a/src/game/server/gamecontext.h b/src/game/server/gamecontext.h index 4be3dd0e0..ea7ed5b92 100644 --- a/src/game/server/gamecontext.h +++ b/src/game/server/gamecontext.h @@ -261,6 +261,7 @@ private: static void ConToggleBroadcast(IConsole::IResult *pResult, void *pUserData); static void ConEyeEmote(IConsole::IResult *pResult, void *pUserData); static void ConShowOthers(IConsole::IResult *pResult, void *pUserData); + static void ConNinjaJetpack(IConsole::IResult *pResult, void *pUserData); static void ConSayTime(IConsole::IResult *pResult, void *pUserData); static void ConSayTimeAll(IConsole::IResult *pResult, void *pUserData); static void ConTime(IConsole::IResult *pResult, void *pUserData); diff --git a/src/game/server/player.cpp b/src/game/server/player.cpp index 6a27b1f60..f8766add7 100644 --- a/src/game/server/player.cpp +++ b/src/game/server/player.cpp @@ -75,6 +75,7 @@ CPlayer::CPlayer(CGameContext *pGameServer, int ClientID, int Team) m_IsUsingDDRaceClient = false; m_ShowOthers = g_Config.m_SvShowOthersDefault; + m_NinjaJetpack = false; m_Paused = PAUSED_NONE; m_DND = false; diff --git a/src/game/server/player.h b/src/game/server/player.h index 78821aec4..878e3dd07 100644 --- a/src/game/server/player.h +++ b/src/game/server/player.h @@ -139,6 +139,7 @@ public: int m_Authed; bool m_IsUsingDDRaceClient; bool m_ShowOthers; + bool m_NinjaJetpack; bool m_Afk; int m_ChatScore;