Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,7 @@ This means that plugins that do binary code analysis (Orpheu for example) probab
| mp_stamina_restore_rate | 0 | 0.0 | - | Framerate (FPS), that used as reference when restoring stamina (fuser2) after jump. |
| mp_logkills | 1 | 0 | 1 | Log kills.<br/>`0` disabled <br/>`1` enabled |
| mp_jump_height | 45 | 0.0 | - | Player jump height. |
| mp_longjump_cooldown | 0.0 | 0.0 | - | Cooldown time (in seconds) between long jumps to prevent abuse.<br/>`0` disabled<br/>`>0` seconds before the player can long jump again. During cooldown, only a regular vertical jump is performed. |
| bot_excellent_morale | 0 | 0 | 1 | Bots always have great morale regardless of defeat or victory. |
| mp_randomspawn | 0 | 0 | 1 | Random player spawns<br/>`0` disabled <br/>`1` enabled<br/>`NOTE`: Navigation `maps/.nav` file required |
| mp_playerid_showhealth | 1 | 0 | 2 | Player ID display mode.<br/>`0` don't show health<br/>`1` show health for teammates only (default CS behaviour)<br/>`2` show health for all players |
Expand Down
7 changes: 7 additions & 0 deletions dist/game.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -670,6 +670,13 @@ mp_stamina_restore_rate "0"
// Default value: "45"
mp_jump_height "45"

// Cooldown time (in seconds) between long jumps to prevent abuse.
// 0 - disabled (default behaviour)
// >0 - seconds before the player can long jump again
//
// Default value: "0.0"
mp_longjump_cooldown "0.0"

// Bots always have great morale regardless of defeat or victory.
// 0 - disabled (default behaviour)
// 1 - enabled
Expand Down
2 changes: 2 additions & 0 deletions regamedll/dlls/game.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,7 @@ cvar_t assist_damage_threshold = { "mp_assist_damage_threshold", "40",
cvar_t freezetime_duck = { "mp_freezetime_duck", "1", 0, 1.0f, nullptr };
cvar_t freezetime_jump = { "mp_freezetime_jump", "1", 0, 1.0f, nullptr };
cvar_t jump_height = { "mp_jump_height", "45", FCVAR_SERVER, 45.0f, nullptr };
cvar_t longjump_cooldown = { "mp_longjump_cooldown", "0.0", 0, 0.0f, nullptr };

cvar_t hostages_rescued_ratio = { "mp_hostages_rescued_ratio", "1.0", 0, 1.0f, nullptr };

Expand Down Expand Up @@ -469,6 +470,7 @@ void EXT_FUNC GameDLLInit()
CVAR_REGISTER(&freezetime_duck);
CVAR_REGISTER(&freezetime_jump);
CVAR_REGISTER(&jump_height);
CVAR_REGISTER(&longjump_cooldown);
CVAR_REGISTER(&defuser_allocation);
CVAR_REGISTER(&location_area_info);
CVAR_REGISTER(&chat_loc_fallback);
Expand Down
1 change: 1 addition & 0 deletions regamedll/dlls/game.h
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,7 @@ extern cvar_t assist_damage_threshold;
extern cvar_t freezetime_duck;
extern cvar_t freezetime_jump;
extern cvar_t jump_height;
extern cvar_t longjump_cooldown;
extern cvar_t defuser_allocation;
extern cvar_t location_area_info;
extern cvar_t chat_loc_fallback;
Expand Down
51 changes: 39 additions & 12 deletions regamedll/pm_shared/pm_shared.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2762,25 +2762,40 @@ void EXT_FUNC __API_HOOK(PM_Jump)()
// UNDONE: note this should be based on forward angles, not current velocity.
if (cansuperjump && (pmove->cmd.buttons & IN_DUCK) && pmove->flDuckTime > 0 && Length(pmove->velocity) > 50)
{
pmove->punchangle[0] = -5.0f;

#ifdef REGAMEDLL_API
if (pmoveplayer->m_flLongJumpForce > 0.0)
#ifdef REGAMEDLL_ADD
if (pmove->fuser4 > 0.0f)
{
fvel = pmoveplayer->m_flLongJumpForce;
pmove->velocity[2] = PM_JumpHeight(false);
}
else
#endif
{
fvel = PLAYER_LONGJUMP_SPEED * 1.6f;
}
pmove->punchangle[0] = -5.0f;

for (int i = 0; i < 2; i++)
{
pmove->velocity[i] = pmove->forward[i] * fvel;
}
#ifdef REGAMEDLL_API
if (pmoveplayer->m_flLongJumpForce > 0.0)
{
fvel = pmoveplayer->m_flLongJumpForce;
}
else
#endif
{
fvel = PLAYER_LONGJUMP_SPEED * 1.6f;
}

pmove->velocity[2] = PM_JumpHeight(true);
for (int i = 0; i < 2; i++)
{
pmove->velocity[i] = pmove->forward[i] * fvel;
}

pmove->velocity[2] = PM_JumpHeight(true);
#ifdef REGAMEDLL_ADD
if (longjump_cooldown.value > 0.0f)
{
pmove->fuser4 = longjump_cooldown.value * 1000.0f;
}
#endif
}
}
else
{
Expand Down Expand Up @@ -3112,6 +3127,18 @@ void PM_ReduceTimers()
pmove->fuser2 = 0;
}
}

#ifdef REGAMEDLL_ADD
if (pmove->fuser4 > 0.0)
{
pmove->fuser4 -= pmove->cmd.msec;

if (pmove->fuser4 < 0.0)
{
pmove->fuser4 = 0;
}
}
#endif
}

qboolean PM_ShouldDoSpectMode()
Expand Down
Loading