Skip to content

Commit 548fa87

Browse files
committed
push to v0.19.50
1 parent f6b6ace commit 548fa87

22 files changed

+917
-310
lines changed

README.md

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ Muff Mode includes the game logic, a server config, bot files and some map entit
8383
- Current weapon is now droppable
8484
- Smart weapon auto-switch: now switches to SSG from SG, CG from MG, never auto-switches to chainfist.
8585
- Instant gametype changing (eg: from FFA to TDM)
86+
- DuelFire Damage has been changed to Haste: 50% faster movement, 50% faster weapon rate of fire.
8687
- Many more!
8788

8889
## Rulesets
@@ -140,14 +141,20 @@ Use **[command] [arg]** for the below listed admin commands:
140141
- **readyall**: force all players to ready status (during readying warmup status)
141142
- **unreadyall**: force all players to NOT ready status (during readying warmup status)
142143

143-
### Client Commands
144+
### Client Commands - Player Configuration
144145
Use **[command] [arg]** for the below listed client commands:
146+
- **announcer**: toggles support of QL match announcer events (uses vo_evil set, needs converting to 22KHz PCM WAV)
147+
- **fm**: toggle frag messages
145148
- **help**: toggle help text drawing
146149
- **id**: toggle crosshair ID drawing
147-
- **fm**: toggle frag messages
148150
- **kb**: toggle kill beeps
149151
- **timer**: toggle match timer drawing
152+
153+
### Client Commands - Gameplay
150154
- **hook/unhook**: hook/unhook off-hand grapple
155+
- **followkiller** : auto-follow killers when spectating (disabled by default)
156+
- **followleader** : when spectating, auto-follows leading player
157+
- **followpowerup** : auto-follows player picking up powerups when spectating (disabled by default)
151158
- **forfeit**: forfeits a match (currently only in duels, requires g_allow_forfeit 1).
152159
- **ready/notready**: sets ready status.
153160
- **readyup**: toggles ready status.
@@ -162,9 +169,9 @@ Use **[command] [arg]** for the below listed client commands:
162169
- **auto/a**: auto-select team
163170
- **free/f**: join free team (non-team games)
164171
- **spectator/s**: spectate
172+
- **time-in** : cuts a time out short
173+
- **time-out** : call a time out, only 1 allowed per player and lasts for value set by g_dm_timeout_length (in seconds). **g_dm_timeout_length 0** disables time outs
165174
- **follow [clientname/clientnum]**: follow a specific player.
166-
- **followkiller** : auto-follow killers when spectating (disabled by default)
167-
- **followpowerup** : auto-follows player picking up powerups when spectating (disabled by default)
168175

169176
### Vote Commands
170177
Use **callvote [command] [arg]** for the below listed vote commands:
@@ -208,6 +215,7 @@ Use **callvote [command] [arg]** for the below listed vote commands:
208215
- **g_dm_do_readyup**: Enforce players to ready up to progress from match warmup stage (requires g_dm_do_warmup 1). (default 0)
209216
- **g_dm_do_warmup**: Allow match warmup stage. (default 1)
210217
- **g_dm_force_join**: replaces g_teamplay_force_join, the menu forces the cvar change so this gets around that, it now applies to regular DM too so the change makes sense.
218+
- **g_dm_holdable_adrenaline** : when set to 1, allows holdable Adrenaline during deathmatch (default 1)
211219
- **g_dm_no_self_damage**: when set to 1, disables any self damage after calculating knockback (default: 0)
212220
- **g_dm_overtime**: Set stoppage time for each overtime session in seconds. Currently only applies to Duels. (default 120)
213221
- **g_dm_powerup_drop**: when set to 1, drops carried powerups upon death (default: 1)
@@ -242,7 +250,7 @@ Use **callvote [command] [arg]** for the below listed vote commands:
242250
- **g_match_lock**: when set to 1, prohibits joining the match while in progress (default 0)
243251
- **g_motd_filename**: points to filename of message of the day file, reverts to default when blank (default motd.txt)
244252
- **g_mover_speed_scale**: sets speed scaling factor for all movers in maps (doors, rotators, lifts etc.) (default: 1.0f)
245-
- **g_no_powerups**: disable powerup pickups (Quad, Protection, Double, DuelFire, Invisibility, etc.)
253+
- **g_no_powerups**: disable powerup pickups (Quad, Protection, Double, Haste, Invisibility, etc.)
246254
- **g_owner_auto_join**: when set to 0, avoids auto-joining a match as lobby owner (default 1)
247255
- **g_round_countdown**: sets round countdown time (in seconds) in round-based gametypes (default 10)
248256
- **g_ruleset**: gameplay rules (default 2):
@@ -435,9 +443,6 @@ Some entity overrides are included which add some subtle ambient sounds, mover s
435443
- Gladiator bots
436444
- Menu overhaul, adding voting, full admin controls, mymap, player config
437445

438-
## FIXME:
439-
- the occasional bugged lifts persist with no fix in sight :(
440-
441446
## Credits:
442447
- The Stingy Hat Games YouTube channel for their excellent modding tutorial, without it I would never be able to compile the damned source!
443448
- Nightdive team for the impressive remaster, also some on the team who patiently answered all my annoying modding questions (particularly Paril, sponge, Edward850)

src/bg_local.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ enum powerup_t : uint8_t {
9696
POWERUP_AM_BOMB,
9797

9898
POWERUP_QUAD,
99-
POWERUP_DUELFIRE,
99+
POWERUP_HASTE,
100100
POWERUP_PROTECTION,
101101
POWERUP_INVISIBILITY,
102102
POWERUP_SILENCER,
@@ -258,6 +258,8 @@ enum player_stat_t {
258258
STAT_MONSTER_COUNT,
259259
STAT_ROUND_NUMBER,
260260

261+
STAT_MEDAL,
262+
261263
// don't use; just for verification
262264
STAT_LAST
263265
};

src/bots/bot_utils.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ static void Player_UpdateState(gentity_t *player) {
3434

3535
if (player->client->pu_time_quad > level.time) {
3636
player->sv.ent_flags |= SVFL_HAS_DMG_BOOST;
37-
} else if (player->client->pu_time_duelfire > level.time) {
37+
} else if (player->client->pu_time_haste > level.time) {
3838
player->sv.ent_flags |= SVFL_HAS_DMG_BOOST;
3939
} else if (player->client->pu_time_double > level.time) {
4040
player->sv.ent_flags |= SVFL_HAS_DMG_BOOST;

src/cg_screen.cpp

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -693,6 +693,28 @@ static void CG_DrawTable(int x, int y, uint32_t width, uint32_t height, int32_t
693693
}
694694
}
695695

696+
/*
697+
=================
698+
CG_TimeStringMs
699+
=================
700+
*/
701+
static const char *CG_TimeStringMs(const int msec) {
702+
int hours, mins, seconds, ms = msec;
703+
704+
seconds = ms / 1000;
705+
ms -= seconds * 1000;
706+
mins = seconds / 60;
707+
seconds -= mins * 60;
708+
hours = mins / 60;
709+
mins -= hours * 60;
710+
711+
if (hours > 0) {
712+
return G_Fmt("{}:{:02}:{:02}.{}", hours, mins, seconds, ms).data();
713+
} else {
714+
return G_Fmt("{:02}:{:02}.{}", mins, seconds, ms).data();
715+
}
716+
}
717+
696718
/*
697719
================
698720
CG_ExecuteLayoutString
@@ -816,7 +838,7 @@ static void CG_ExecuteLayoutString(const char *s, vrect_t hud_vrect, vrect_t hud
816838
cgi.Com_Error("client >= MAX_CLIENTS");
817839
}
818840

819-
int score, ping;
841+
int score, ping, time;
820842

821843
token = COM_Parse(&s);
822844
if (!skip_depth)
@@ -826,23 +848,28 @@ static void CG_ExecuteLayoutString(const char *s, vrect_t hud_vrect, vrect_t hud
826848
if (!skip_depth) {
827849
ping = atoi(token);
828850

851+
token = COM_Parse(&s);
852+
time = atoi(token);
853+
854+
const char *scr = time > 0 ? CG_TimeStringMs(time) : G_Fmt("{}", score).data();
855+
829856
cgi.SCR_SetAltTypeface(ui_acc_alttypeface->integer && true);
830857
if (!scr_usekfont->integer)
831858
CG_DrawString(x + 32 * scale, y, scale, cgi.CL_GetClientName(value));
832859
else
833860
cgi.SCR_DrawFontString(cgi.CL_GetClientName(value), x + 32 * scale, y - (font_y_offset * scale), scale, rgba_white, true, text_align_t::LEFT);
834861

835862
if (!scr_usekfont->integer)
836-
CG_DrawString(x + 32 * scale, y + 10 * scale, scale, G_Fmt("{}", score).data(), true);
863+
CG_DrawString(x + 32 * scale, y + 10 * scale, scale, scr, true);
837864
else
838-
cgi.SCR_DrawFontString(G_Fmt("{}", score).data(), x + 32 * scale, y + (10 - font_y_offset) * scale, scale, rgba_white, true, text_align_t::LEFT);
839-
840-
cgi.SCR_DrawPic(x + 96 * scale, y + 10 * scale, 9 * scale, 9 * scale, "ping");
865+
cgi.SCR_DrawFontString(scr, x + 32 * scale, y + (10 - font_y_offset) * scale, scale, rgba_white, true, text_align_t::LEFT);
841866

867+
cgi.SCR_DrawPic(x + 32 + 96 * scale, y + 10 * scale, 9 * scale, 9 * scale, "ping");
842868
if (!scr_usekfont->integer)
843-
CG_DrawString(x + 73 * scale + 32 * scale, y + 10 * scale, scale, G_Fmt("{}", ping).data());
869+
CG_DrawString(x + 32 + 73 * scale + 32 * scale, y + 10 * scale, scale, G_Fmt("{}", ping).data());
844870
else
845-
cgi.SCR_DrawFontString(G_Fmt("{}", ping).data(), x + 107 * scale, y + (10 - font_y_offset) * scale, scale, rgba_white, true, text_align_t::LEFT);
871+
cgi.SCR_DrawFontString(G_Fmt("{}", ping).data(), x + 32 + 107 * scale, y + (10 - font_y_offset) * scale, scale, rgba_white, true, text_align_t::LEFT);
872+
846873
cgi.SCR_SetAltTypeface(false);
847874
}
848875
continue;

src/g_chase.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ void UpdateChaseCam(gentity_t *ent) {
5959
// mark the chased player as instanced so we can disable their model's visibility
6060
targ->svflags |= SVF_INSTANCED;
6161

62-
// copy everything from ps but pmove, pov, stats, and team_id
62+
// copy everything from ps but pmove, pov, stats, and team
6363
ent->client->ps.viewangles = targ->client->ps.viewangles;
6464
ent->client->ps.viewoffset = targ->client->ps.viewoffset;
6565
ent->client->ps.kick_angles = targ->client->ps.kick_angles;
@@ -136,6 +136,12 @@ void UpdateChaseCam(gentity_t *ent) {
136136
goal = trace.endpos;
137137
goal[2] += 6;
138138
}
139+
140+
ent->client->ps.gunindex = 0;
141+
ent->client->ps.gunskin = 0;
142+
ent->s.modelindex = 0;
143+
ent->s.modelindex2 = 0;
144+
ent->s.modelindex3 = 0;
139145
}
140146

141147
if (targ->deadflag)

0 commit comments

Comments
 (0)