From eaeaf54250eae313a2121f15aeae5dae294c7276 Mon Sep 17 00:00:00 2001 From: def Date: Wed, 16 Jul 2014 02:59:39 +0200 Subject: [PATCH] Add freezehammer/unfreezehammer for blocker --- src/game/ddracecommands.h | 3 +++ src/game/server/ddracecommands.cpp | 36 ++++++++++++++++++++++++++ src/game/server/entities/character.cpp | 5 ++++ src/game/server/entities/character.h | 1 + src/game/server/gamecontext.h | 2 ++ 5 files changed, 47 insertions(+) diff --git a/src/game/ddracecommands.h b/src/game/ddracecommands.h index 39a038842..3fdc6e489 100644 --- a/src/game/ddracecommands.h +++ b/src/game/ddracecommands.h @@ -44,6 +44,9 @@ CONSOLE_COMMAND("muteid", "vi", CFGFLAG_SERVER, ConMuteID, this, ""); CONSOLE_COMMAND("muteip", "si", CFGFLAG_SERVER, ConMuteIP, this, ""); CONSOLE_COMMAND("unmute", "v", CFGFLAG_SERVER, ConUnmute, this, ""); CONSOLE_COMMAND("mutes", "", CFGFLAG_SERVER, ConMutes, this, ""); + +CONSOLE_COMMAND("freezehammer", "v", CFGFLAG_SERVER, ConFreezeHammer, this, "Gives a player Freeze Hammer") +CONSOLE_COMMAND("unfreezehammer", "v", CFGFLAG_SERVER, ConUnFreezeHammer, this, "Removes Freeze Hammer from a player") #undef CONSOLE_COMMAND #endif diff --git a/src/game/server/ddracecommands.cpp b/src/game/server/ddracecommands.cpp index 8613e2ba2..40a82ec1a 100644 --- a/src/game/server/ddracecommands.cpp +++ b/src/game/server/ddracecommands.cpp @@ -493,3 +493,39 @@ void CGameContext::ConList(IConsole::IResult *pResult, void *pUserData) else pSelf->List(ClientID, &zerochar); } + +void CGameContext::ConFreezeHammer(IConsole::IResult *pResult, void *pUserData) +{ + CGameContext *pSelf = (CGameContext *) pUserData; + int Victim = pResult->GetVictim(); + + CCharacter* pChr = pSelf->GetPlayerChar(Victim); + + if (!pChr) + return; + + char aBuf[128]; + str_format(aBuf, sizeof aBuf, "'%s' got freeze hammer!", + pSelf->Server()->ClientName(Victim)); + pSelf->SendChat(-1, CHAT_ALL, aBuf); + + pChr->m_FreezeHammer = true; +} + +void CGameContext::ConUnFreezeHammer(IConsole::IResult *pResult, void *pUserData) +{ + CGameContext *pSelf = (CGameContext *) pUserData; + int Victim = pResult->GetVictim(); + + CCharacter* pChr = pSelf->GetPlayerChar(Victim); + + if (!pChr) + return; + + char aBuf[128]; + str_format(aBuf, sizeof aBuf, "'%s' lost freeze hammer!", + pSelf->Server()->ClientName(Victim)); + pSelf->SendChat(-1, CHAT_ALL, aBuf); + + pChr->m_FreezeHammer = false; +} diff --git a/src/game/server/entities/character.cpp b/src/game/server/entities/character.cpp index dd21bb396..e56f31b7a 100644 --- a/src/game/server/entities/character.cpp +++ b/src/game/server/entities/character.cpp @@ -429,6 +429,10 @@ void CCharacter::FireWeapon() pTarget->TakeDamage((vec2(0.f, -1.0f) + Temp) * Strength, g_pData->m_Weapons.m_Hammer.m_pBase->m_Damage, m_pPlayer->GetCID(), m_Core.m_ActiveWeapon); pTarget->UnFreeze(); + + if(m_FreezeHammer) + pTarget->Freeze(); + Hits++; } @@ -2039,6 +2043,7 @@ void CCharacter::DDRaceInit() m_SuperJump = false; m_Jetpack = false; m_Core.m_Jumps = 2; + m_FreezeHammer = false; int Team = Teams()->m_Core.Team(m_Core.m_Id); diff --git a/src/game/server/entities/character.h b/src/game/server/entities/character.h index 319346e9a..c4feff734 100644 --- a/src/game/server/entities/character.h +++ b/src/game/server/entities/character.h @@ -182,6 +182,7 @@ public: int m_FreezeTick; bool m_DeepFreeze; bool m_EndlessHook; + bool m_FreezeHammer; enum { HIT_ALL=0, diff --git a/src/game/server/gamecontext.h b/src/game/server/gamecontext.h index d821f6cd6..06ca0ba78 100644 --- a/src/game/server/gamecontext.h +++ b/src/game/server/gamecontext.h @@ -296,6 +296,8 @@ private: static void ConMutes(IConsole::IResult *pResult, void *pUserData); static void ConList(IConsole::IResult *pResult, void *pUserData); + static void ConFreezeHammer(IConsole::IResult *pResult, void *pUserData); + static void ConUnFreezeHammer(IConsole::IResult *pResult, void *pUserData); enum {