Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add cvar for stamina restoration speed based on fps reference. #1005

Merged
merged 4 commits into from
Mar 27, 2025
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 @@ -124,6 +124,7 @@ This means that plugins that do binary code analysis (Orpheu for example) probab
| mp_ammo_respawn_time | 20 | 0.0 | - | The respawn time for ammunition. |
| mp_vote_flags | km | 0 | - | Vote systems enabled in server.<br/>`0` voting disabled<br/>`k` votekick enabled via `vote` command<br/>`m` votemap enabled via `votemap` command |
| mp_votemap_min_time | 180 | 0.0 | - | Minimum seconds that must elapse on map before `votemap` command can be used. |
| 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. |
| bot_excellent_morale | 0 | 0 | 1 | Bots always have great morale regardless of defeat or victory. |
Expand Down
6 changes: 6 additions & 0 deletions dist/game.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -628,6 +628,12 @@ mp_vote_flags "km"
// Default value: "180"
mp_votemap_min_time "180"

// Framerate (FPS), that is used as a reference when restoring stamina (fuser2) after a jump.
// 0 - disabled
//
// Default value: "0"
mp_stamina_restore_rate "0"

// Player jump height
//
// Default value: "45"
Expand Down
4 changes: 4 additions & 0 deletions regamedll/dlls/game.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,8 @@ cvar_t ammo_respawn_time = { "mp_ammo_respawn_time", "20", FCVAR_SERVER, 2
cvar_t vote_flags = { "mp_vote_flags", "km", 0, 0.0f, nullptr };
cvar_t votemap_min_time = { "mp_votemap_min_time", "180", 0, 180.0f, nullptr };

cvar_t stamina_restore_rate = { "mp_stamina_restore_rate", "0", 0, 0.f, nullptr };

cvar_t logkills = { "mp_logkills", "1", FCVAR_SERVER, 0.0f, nullptr };
cvar_t randomspawn = { "mp_randomspawn", "0", FCVAR_SERVER, 0.0f, nullptr };

Expand Down Expand Up @@ -478,6 +480,8 @@ void EXT_FUNC GameDLLInit()
CVAR_REGISTER(&playerid_showhealth);
CVAR_REGISTER(&playerid_field);

CVAR_REGISTER(&stamina_restore_rate);

// print version
CONSOLE_ECHO("ReGameDLL version: " APP_VERSION "\n");

Expand Down
1 change: 1 addition & 0 deletions regamedll/dlls/game.h
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,7 @@ extern cvar_t weapon_respawn_time;
extern cvar_t ammo_respawn_time;
extern cvar_t vote_flags;
extern cvar_t votemap_min_time;
extern cvar_t stamina_restore_rate;
extern cvar_t logkills;
extern cvar_t randomspawn;
extern cvar_t playerid_showhealth;
Expand Down
13 changes: 13 additions & 0 deletions regamedll/pm_shared/pm_shared.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -886,6 +886,18 @@ void PM_WalkMove()
{
real_t flRatio = (100 - pmove->fuser2 * 0.001 * 19) * 0.01;

#ifdef REGAMEDLL_ADD
// change stamina restoration speed by fps reference
if (stamina_restore_rate.value > 0.0f)
{
real_t flReferenceFrametime = 1.0f / stamina_restore_rate.value;

float flFrametimeRatio = pmove->frametime / flReferenceFrametime;

flRatio = pow(flRatio, flFrametimeRatio);
}
#endif

pmove->velocity[0] *= flRatio;
pmove->velocity[1] *= flRatio;
}
Expand Down Expand Up @@ -2611,6 +2623,7 @@ void EXT_FUNC __API_HOOK(PM_Jump)()
{
// NOTE: don't do it in .f (float)
real_t flRatio = (100.0 - pmove->fuser2 * 0.001 * 19.0) * 0.01;

pmove->velocity[2] *= flRatio;
}

Expand Down