diff --git a/README.md b/README.md new file mode 100644 index 000000000..918901bdf --- /dev/null +++ b/README.md @@ -0,0 +1,41 @@ +How to PLay + +Controls +- Move: WASD +- Jump: Spacebar +- Sprint: Shift +- Dodge: Ctrl +- Attack: Left Click +- Use Power-Up: F + +Objectives +1. Navigate the Course: Overcome obstacles such as auto turrets, rocket launchers that deal spash damage, spike pits, and many more +2. Survive Monster Attacks: Evade or defeat creatures that chase you through the course +3. Defeat Bosses: Face off against powerful bosses at the end of certain levels to reach the next stage +4. Use Power-Ups: Find and activate special power-ups to hel pyou in your survival + + +Traps and Obstacles +- Spike pits: jump over or find a different route to avoid damage +- Auto turrets: tracks player and shoots automatically +- Rocket Launcher: shoots at a specified location but deals splash damage so be careful +- Laser Barriers: Use teleport blaster to get through them + +Monsters +- Chasers: Persistent enemies that follow you endlessly until level is completed or they are destroyed +- Ambushers: Hide in certain areas and attacks the player when close +- Shooters: Monsters that use guns for ranged attacks +- Boss: Have different attack patterns in each level + +Power-Ups +- Speed Boost: Increases players movement speed for a limited amount of time +- Shield: Grants temporary god mod (cant take damage) +- Jump Boost: Allows players to jump to higher locations +- Unlimited Ammo: For a set amount of time the player will have unlimited ammo + +Weapon Types +- Teleporter: The blaster in the game will act like a wand teleporter that lets the player move to different areas of the map by simply shooting it + +Winning Conditions +- Complete all courses by reaching the final goal +- Defeat all bosses and survive every challenge thrown at you diff --git a/game/gamesys/Class.cpp b/game/gamesys/Class.cpp index 51cae34e6..ddc796b82 100644 --- a/game/gamesys/Class.cpp +++ b/game/gamesys/Class.cpp @@ -11,7 +11,7 @@ instancing of objects. #include "../Game_local.h" #ifdef _WIN32 -#include "TypeInfo.h" +#include "TypeInfo" #else #include "NoGameTypeInfo.h" #endif diff --git a/game/gamesys/SaveGame.cpp b/game/gamesys/SaveGame.cpp index 28d501df8..080834f90 100644 --- a/game/gamesys/SaveGame.cpp +++ b/game/gamesys/SaveGame.cpp @@ -5,7 +5,7 @@ #include "../Game_local.h" #ifdef _WIN32 -#include "TypeInfo.h" +#include "TypeInfo" #else #include "NoGameTypeInfo.h" #endif diff --git a/game/gamesys/SysCmds.cpp b/game/gamesys/SysCmds.cpp index ab92878fd..5678c0bf3 100644 --- a/game/gamesys/SysCmds.cpp +++ b/game/gamesys/SysCmds.cpp @@ -26,7 +26,7 @@ // RAVEN END #ifdef _WIN32 -#include "TypeInfo.h" +#include "TypeInfo" #else #include "NoGameTypeInfo.h" #endif @@ -171,7 +171,7 @@ void Cmd_ListSpawnArgs_f( const idCmdArgs &args ) { for ( i = 0; i < ent->spawnArgs.GetNumKeyVals(); i++ ) { const idKeyValue *kv = ent->spawnArgs.GetKeyVal( i ); - gameLocal.Printf( "\"%s\" "S_COLOR_WHITE"\"%s\"\n", kv->GetKey().c_str(), kv->GetValue().c_str() ); + gameLocal.Printf( "\"%s\" " S_COLOR_WHITE "\"%s\"\n", kv->GetKey().c_str(), kv->GetValue().c_str() ); } } @@ -2930,6 +2930,25 @@ void Cmd_ToggleBuyMenu_f( const idCmdArgs& args ) { } } +// Aleen's Cmd Start + +void Cmd_WhereAmI_f(const idCmdArgs& args) { + idPlayer* player = gameLocal.GetLocalPlayer(); + if (!player) return; + gameLocal.Printf("I am at: (%f,%f,%f)\n", + player->firstPersonViewOrigin.x, + player->firstPersonViewOrigin.y, + player->firstPersonViewOrigin.z); +} + +void Cmd_GiveRocketLauncher_f(const idCmdArgs& args) { + idPlayer* player = gameLocal.GetLocalPlayer(); + if (!player) return; + gameLocal.Printf("Given Rocket Launcher\n"); +} + +// Aleen's Cmd End + void Cmd_BuyItem_f( const idCmdArgs& args ) { idPlayer* player = gameLocal.GetLocalPlayer(); if ( !player ) { @@ -3233,6 +3252,12 @@ void idGameLocal::InitConsoleCommands( void ) { cmdSystem->AddCommand( "buy", Cmd_BuyItem_f, CMD_FL_GAME, "Buy an item (if in a buy zone and the game type supports it)" ); // RITUAL END +// Aleen's Ritual Start + + cmdSystem->AddCommand("whereami", Cmd_WhereAmI_f, CMD_FL_GAME, "Show Location"); + cmdSystem->AddCommand("give weapon_rocketlauncher", Cmd_GiveRocketLauncher_f, CMD_FL_GAME, "Give Player Rocket Launcher"); + +// Aleen's Ritual End } /* diff --git a/game/weapon/WeaponBlaster.cpp b/game/weapon/WeaponBlaster.cpp index e6c182b31..2b62a156b 100644 --- a/game/weapon/WeaponBlaster.cpp +++ b/game/weapon/WeaponBlaster.cpp @@ -431,7 +431,7 @@ stateResult_t rvWeaponBlaster::State_Fire ( const stateParms_t& parms ) { PlayEffect ( "fx_chargedflash", barrelJointView, false ); PlayAnim( ANIMCHANNEL_ALL, "chargedfire", parms.blendFrames ); } else { - Attack ( false, 1, spread, 0, 1.0f ); + Attack ( false, 10, 10, 0, 1.0f ); PlayEffect ( "fx_normalflash", barrelJointView, false ); PlayAnim( ANIMCHANNEL_ALL, "fire", parms.blendFrames ); } diff --git a/game/weapon/WeaponRocketLauncher.cpp b/game/weapon/WeaponRocketLauncher.cpp index bbd362379..fa7824172 100644 --- a/game/weapon/WeaponRocketLauncher.cpp +++ b/game/weapon/WeaponRocketLauncher.cpp @@ -443,14 +443,35 @@ stateResult_t rvWeaponRocketLauncher::State_Fire ( const stateParms_t& parms ) { STAGE_INIT, STAGE_WAIT, }; - switch ( parms.stage ) { + + //int rocketsToFire = AmmoInClip(); // amount of ammo in clip + + + + switch (parms.stage) { case STAGE_INIT: - nextAttackTime = gameLocal.time + (fireRate * owner->PowerUpModifier ( PMOD_FIRERATE )); - Attack ( false, 1, spread, 0, 1.0f ); - PlayAnim ( ANIMCHANNEL_LEGS, "fire", parms.blendFrames ); - return SRESULT_STAGE ( STAGE_WAIT ); - - case STAGE_WAIT: + + nextAttackTime = gameLocal.time + (fireRate * owner->PowerUpModifier(PMOD_FIRERATE)); + for (int i = 0; i < clipSize; i++) { // shoot every available ammo in clip + if (clipSize > 0) { + Attack(false, 1, spread, 0, 1.0f); + PlayAnim(ANIMCHANNEL_LEGS, "fire", parms.blendFrames); + gameLocal.Printf("shot\n"); + } + else { + return SRESULT_STAGE(STAGE_WAIT); + } + } + + // Original Code --> + // + // case STAGE_INIT: + // nextAttackTime = gameLocal.time + (fireRate * owner->PowerUpModifier ( PMOD_FIRERATE )); + // Attack(false, 1, spread, 0, 1.0f); + // PlayAnim(ANIMCHANNEL_LEGS, "fire", parms.blendFrames); + // return SRESULT_STAGE(STAGE_WAIT); + + case STAGE_WAIT: if ( wsfl.attack && gameLocal.time >= nextAttackTime && ( gameLocal.isClient || AmmoInClip ( ) ) && !wsfl.lowerWeapon ) { SetState ( "Fire", 0 ); return SRESULT_DONE; diff --git a/idlib/math/Simd.cpp b/idlib/math/Simd.cpp index 471720aec..f7b2bb1c2 100644 --- a/idlib/math/Simd.cpp +++ b/idlib/math/Simd.cpp @@ -1491,7 +1491,7 @@ void TestMemcpy( void ) { p_simd->Memcpy( test1, test0, 8192 ); for ( j = 0; j < i; j++ ) { if ( test1[j] != test0[j] ) { - idLib::common->Printf( " simd->Memcpy() "S_COLOR_RED"X\n" ); + idLib::common->Printf( " simd->Memcpy() " S_COLOR_RED "X\n" ); return; } } @@ -1517,7 +1517,7 @@ void TestMemset( void ) { p_simd->Memset( test, j, i ); for ( k = 0; k < i; k++ ) { if ( test[k] != (byte)j ) { - idLib::common->Printf( " simd->Memset() "S_COLOR_RED"X\n" ); + idLib::common->Printf( " simd->Memset() " S_COLOR_RED "X\n" ); return; } } diff --git a/q4sdk.sln b/q4sdk.sln index 2f4df2a3f..7691119c0 100644 --- a/q4sdk.sln +++ b/q4sdk.sln @@ -1,46 +1,40 @@ -Microsoft Visual Studio Solution File, Format Version 8.00 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Game", "game.vcproj", "{49BEC5C6-B964-417A-851E-808886B57430}" - ProjectSection(ProjectDependencies) = postProject - {49BEC5C6-B964-417A-851E-808886B57400} = {49BEC5C6-B964-417A-851E-808886B57400} - EndProjectSection +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.12.35707.178 d17.12 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Game", "game.vcxproj", "{49BEC5C6-B964-417A-851E-808886B57430}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "idLib", "idlib.vcproj", "{49BEC5C6-B964-417A-851E-808886B57400}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "idLib", "idlib.vcxproj", "{49BEC5C6-B964-417A-851E-808886B57400}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MPGame", "mpgame.vcproj", "{F2EF9123-B7C3-4F2F-A351-747B595BB534}" - ProjectSection(ProjectDependencies) = postProject - {49BEC5C6-B964-417A-851E-808886B57400} = {49BEC5C6-B964-417A-851E-808886B57400} - EndProjectSection +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MPGame", "mpgame.vcxproj", "{F2EF9123-B7C3-4F2F-A351-747B595BB534}" EndProject Global - GlobalSection(SolutionConfiguration) = preSolution - Debug = Debug - DebugInline = DebugInline - Release = Release + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x86 = Debug|x86 + DebugInline|x86 = DebugInline|x86 + Release|x86 = Release|x86 EndGlobalSection - GlobalSection(ProjectConfiguration) = postSolution - {49BEC5C6-B964-417A-851E-808886B57430}.Debug.ActiveCfg = Debug|Win32 - {49BEC5C6-B964-417A-851E-808886B57430}.Debug.Build.0 = Debug|Win32 - {49BEC5C6-B964-417A-851E-808886B57430}.DebugInline.ActiveCfg = DebugInline|Win32 - {49BEC5C6-B964-417A-851E-808886B57430}.DebugInline.Build.0 = DebugInline|Win32 - {49BEC5C6-B964-417A-851E-808886B57430}.Release.ActiveCfg = Release|Win32 - {49BEC5C6-B964-417A-851E-808886B57430}.Release.Build.0 = Release|Win32 - {49BEC5C6-B964-417A-851E-808886B57400}.Debug.ActiveCfg = Debug|Win32 - {49BEC5C6-B964-417A-851E-808886B57400}.Debug.Build.0 = Debug|Win32 - {49BEC5C6-B964-417A-851E-808886B57400}.DebugInline.ActiveCfg = DebugInline|Win32 - {49BEC5C6-B964-417A-851E-808886B57400}.DebugInline.Build.0 = DebugInline|Win32 - {49BEC5C6-B964-417A-851E-808886B57400}.Release.ActiveCfg = Release|Win32 - {49BEC5C6-B964-417A-851E-808886B57400}.Release.Build.0 = Release|Win32 - {F2EF9123-B7C3-4F2F-A351-747B595BB534}.Debug.ActiveCfg = Debug|Win32 - {F2EF9123-B7C3-4F2F-A351-747B595BB534}.Debug.Build.0 = Debug|Win32 - {F2EF9123-B7C3-4F2F-A351-747B595BB534}.DebugInline.ActiveCfg = DebugInline|Win32 - {F2EF9123-B7C3-4F2F-A351-747B595BB534}.DebugInline.Build.0 = DebugInline|Win32 - {F2EF9123-B7C3-4F2F-A351-747B595BB534}.Release.ActiveCfg = Release|Win32 - {F2EF9123-B7C3-4F2F-A351-747B595BB534}.Release.Build.0 = Release|Win32 + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {49BEC5C6-B964-417A-851E-808886B57430}.Debug|x86.ActiveCfg = Debug|Win32 + {49BEC5C6-B964-417A-851E-808886B57430}.Debug|x86.Build.0 = Debug|Win32 + {49BEC5C6-B964-417A-851E-808886B57430}.DebugInline|x86.ActiveCfg = DebugInline|Win32 + {49BEC5C6-B964-417A-851E-808886B57430}.DebugInline|x86.Build.0 = DebugInline|Win32 + {49BEC5C6-B964-417A-851E-808886B57430}.Release|x86.ActiveCfg = Release|Win32 + {49BEC5C6-B964-417A-851E-808886B57430}.Release|x86.Build.0 = Release|Win32 + {49BEC5C6-B964-417A-851E-808886B57400}.Debug|x86.ActiveCfg = Debug|Win32 + {49BEC5C6-B964-417A-851E-808886B57400}.Debug|x86.Build.0 = Debug|Win32 + {49BEC5C6-B964-417A-851E-808886B57400}.DebugInline|x86.ActiveCfg = DebugInline|Win32 + {49BEC5C6-B964-417A-851E-808886B57400}.DebugInline|x86.Build.0 = DebugInline|Win32 + {49BEC5C6-B964-417A-851E-808886B57400}.Release|x86.ActiveCfg = Release|Win32 + {49BEC5C6-B964-417A-851E-808886B57400}.Release|x86.Build.0 = Release|Win32 + {F2EF9123-B7C3-4F2F-A351-747B595BB534}.Debug|x86.ActiveCfg = Debug|Win32 + {F2EF9123-B7C3-4F2F-A351-747B595BB534}.Debug|x86.Build.0 = Debug|Win32 + {F2EF9123-B7C3-4F2F-A351-747B595BB534}.DebugInline|x86.ActiveCfg = DebugInline|Win32 + {F2EF9123-B7C3-4F2F-A351-747B595BB534}.DebugInline|x86.Build.0 = DebugInline|Win32 + {F2EF9123-B7C3-4F2F-A351-747B595BB534}.Release|x86.ActiveCfg = Release|Win32 + {F2EF9123-B7C3-4F2F-A351-747B595BB534}.Release|x86.Build.0 = Release|Win32 EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - EndGlobalSection - GlobalSection(ExtensibilityAddIns) = postSolution + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE EndGlobalSection EndGlobal