From 9ede499d487b12dbd66a57917e389ea9b4ee4849 Mon Sep 17 00:00:00 2001 From: Chris Parsons Date: Sun, 12 Jul 2026 00:12:38 -0230 Subject: [PATCH 1/7] initial commit --- docs/CHANGELOG.md | 4 + game_patch/CMakeLists.txt | 4 + game_patch/input/key.cpp | 107 +++-- game_patch/main/main.cpp | 2 + game_patch/misc/alpine_settings.cpp | 10 + game_patch/misc/alpine_settings.h | 11 + game_patch/misc/player.cpp | 2 + game_patch/misc/spray_picker.cpp | 305 ++++++++++++++ game_patch/misc/spray_picker.h | 9 + game_patch/misc/ui.cpp | 46 ++- game_patch/multi/alpine_packets.cpp | 166 ++++++++ game_patch/multi/alpine_packets.h | 33 +- game_patch/multi/dedi_cfg.cpp | 21 + game_patch/multi/kill.cpp | 4 + game_patch/multi/lms.cpp | 2 +- game_patch/multi/multi.cpp | 2 + game_patch/multi/multi.h | 1 + game_patch/multi/network.cpp | 6 + game_patch/multi/network.h | 1 + game_patch/multi/server.cpp | 14 + game_patch/multi/server.h | 2 + game_patch/multi/server_internal.h | 7 + game_patch/multi/sprays.cpp | 575 ++++++++++++++++++++++++++ game_patch/multi/sprays.h | 22 + game_patch/rf/geometry.h | 1 + game_patch/rf/player/control_config.h | 3 +- game_patch/rf/player/player.h | 1 + game_patch/sound/sound.cpp | 8 + game_patch/sound/sound.h | 1 + 29 files changed, 1326 insertions(+), 44 deletions(-) create mode 100644 game_patch/misc/spray_picker.cpp create mode 100644 game_patch/misc/spray_picker.h create mode 100644 game_patch/multi/sprays.cpp create mode 100644 game_patch/multi/sprays.h diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 9103d947..5ef0493e 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -13,6 +13,9 @@ Version 1.4.0 (Lupin): Not yet released - Bagman (`BAG`) - Team Bagman (`TBAG`) - Last Miner Standing (`LMS`) +- Add sprays with bindable `Spray` control + - `cl_sprays` console command to toggle local display and dedicated server `[sprays]` config section + - `spray` console command to select spray, and in-game spray picker in advanced options ### Minor features, changes, and enhancements [@GooberRF](https://github.com/GooberRF) @@ -76,6 +79,7 @@ Version 1.4.0 (Lupin): Not yet released - Fix unbounded read when a request to play a sound above `g_num_sounds` is made - Fix camera angle snapping when switching between free look and third person camera modes - Fix a server crash that could be triggered by a zero-length UDP packet in the packet receive pump +- Fix overlapping decals rendering with the oldest on top instead of the newest [@is-this-c](https://github.com/is-this-c) - Clear cached server config output after a shuffle of a server's rotation diff --git a/game_patch/CMakeLists.txt b/game_patch/CMakeLists.txt index cda3822e..13afff62 100644 --- a/game_patch/CMakeLists.txt +++ b/game_patch/CMakeLists.txt @@ -150,6 +150,8 @@ set(SRCS multi/rounds.cpp multi/lms.h multi/lms.cpp + multi/sprays.h + multi/sprays.cpp multi/kill.cpp multi/network.cpp multi/network.h @@ -275,6 +277,8 @@ set(SRCS misc/destruction.h misc/camera.cpp misc/ui.cpp + misc/spray_picker.cpp + misc/spray_picker.h misc/game.cpp misc/level.cpp misc/waypoints.cpp diff --git a/game_patch/input/key.cpp b/game_patch/input/key.cpp index 37751ddc..0e9fbc7d 100644 --- a/game_patch/input/key.cpp +++ b/game_patch/input/key.cpp @@ -21,6 +21,7 @@ #include "../rf/os/os.h" #include "../rf/ui.h" #include "../multi/alpine_packets.h" +#include "../multi/sprays.h" #include "../os/console.h" #include "input.h" @@ -278,49 +279,76 @@ CodeInjection control_config_init_patch{ rf::AlpineControlConfigAction::AF_ACTION_SPECTATE_TOGGLE_FREELOOK); alpine_control_config_add_item(ccp, "Toggle Spectate", false, rf::KEY_DIVIDE, -1, -1, rf::AlpineControlConfigAction::AF_ACTION_SPECTATE_TOGGLE); + alpine_control_config_add_item(ccp, "Spray", 0, rf::KEY_Z, -1, -1, + rf::AlpineControlConfigAction::AF_ACTION_SPRAY); }, }; -// alpine controls that activate only when local player is alive (multi or single) +// Handles alpine controls that activate only when the local player is alive (multi or single). +static void execute_alive_alpine_control(int action_index) +{ + // only intercept alpine controls + if (action_index < starting_alpine_control_index) { + return; + } + + if (action_index == static_cast(get_af_control(rf::AlpineControlConfigAction::AF_ACTION_FLASHLIGHT)) + && !rf::is_multi) { + if (g_headlamp_toggle_enabled) { + (rf::entity_headlamp_is_on(rf::local_player_entity)) + ? rf::entity_headlamp_turn_off(rf::local_player_entity) + : rf::entity_headlamp_turn_on(rf::local_player_entity); + grant_achievement_sp(AchievementName::UseFlashlight); + } + } + else if (action_index == starting_alpine_control_index + + static_cast(rf::AlpineControlConfigAction::AF_ACTION_SELF_KILL) && + rf::is_multi) { + rf::player_kill_self(rf::local_player); + if (gt_is_run()) { + multi_hud_reset_run_gt_timer(true); + } + } + else if (action_index == starting_alpine_control_index + + static_cast(rf::AlpineControlConfigAction::AF_ACTION_DROP_FLAG) && + rf::is_multi && !rf::is_server) { + send_chat_line_packet("/dropflag", nullptr); + } + else if (action_index == starting_alpine_control_index + + static_cast(rf::AlpineControlConfigAction::AF_ACTION_PING_LOCATION)) { + ping_looked_at_location(); + } + else if (action_index == starting_alpine_control_index + + static_cast(rf::AlpineControlConfigAction::AF_ACTION_SPRAY)) { + sprays_handle_spray_action(); + } + else if (action_index == starting_alpine_control_index + + static_cast(rf::AlpineControlConfigAction::AF_ACTION_INSPECT_WEAPON)) { + fpgun_play_random_idle_anim(); + } +} + CodeInjection player_execute_action_patch{ 0x004A6283, [](auto& regs) { - rf::ControlConfigAction action = regs.ebp; - int action_index = static_cast(action); - //xlog::warn("executing action {}", action_index); + int action_index = static_cast(regs.ebp); + if (starting_alpine_control_index != -1 && action_index >= starting_alpine_control_index) { + execute_alive_alpine_control(action_index); + regs.eip = 0x004A681B; + } + }, +}; - // only intercept alpine controls - if (action_index >= starting_alpine_control_index) { - if (action_index == static_cast(get_af_control(rf::AlpineControlConfigAction::AF_ACTION_FLASHLIGHT)) - && !rf::is_multi) { - if (g_headlamp_toggle_enabled) { - (rf::entity_headlamp_is_on(rf::local_player_entity)) - ? rf::entity_headlamp_turn_off(rf::local_player_entity) - : rf::entity_headlamp_turn_on(rf::local_player_entity); - grant_achievement_sp(AchievementName::UseFlashlight); - } - } - else if (action_index == starting_alpine_control_index + - static_cast(rf::AlpineControlConfigAction::AF_ACTION_SELF_KILL) && - rf::is_multi) { - rf::player_kill_self(rf::local_player); - if (gt_is_run()) { - multi_hud_reset_run_gt_timer(true); - } - } - else if (action_index == starting_alpine_control_index + - static_cast(rf::AlpineControlConfigAction::AF_ACTION_DROP_FLAG) && - rf::is_multi && !rf::is_server) { - send_chat_line_packet("/dropflag", nullptr); - } - else if (action_index == starting_alpine_control_index + - static_cast(rf::AlpineControlConfigAction::AF_ACTION_PING_LOCATION)) { - ping_looked_at_location(); - } - else if (action_index == starting_alpine_control_index + - static_cast(rf::AlpineControlConfigAction::AF_ACTION_INSPECT_WEAPON)) { - fpgun_play_random_idle_anim(); - } +// Stock player_execute_action rejects action indices above 0x3c (60). +// Alpine controls at or past index 0x3d (61) never reach that dispatch, +// so handle them here and return before the stock guard runs. +CodeInjection player_execute_action_high_index_patch{ + 0x004A6272, + [](auto& regs) { + int action_index = static_cast(regs.ebp); + if (action_index > 0x3c && action_index >= starting_alpine_control_index) { + execute_alive_alpine_control(action_index); + regs.eip = 0x004A681B; } }, }; @@ -423,8 +451,10 @@ CodeInjection controls_process_patch{ 0x00430E4C, [](auto& regs) { int index = regs.edi; - if (index >= starting_alpine_control_index && - index <= static_cast(rf::AlpineControlConfigAction::_AF_ACTION_LAST_VARIANT)) { + if (starting_alpine_control_index != -1 && + index >= starting_alpine_control_index && + index <= starting_alpine_control_index + + static_cast(rf::AlpineControlConfigAction::_AF_ACTION_LAST_VARIANT)) { //xlog::warn("passing control {}", index); regs.eip = 0x00430E24; } @@ -543,6 +573,7 @@ void key_apply_patch() // Handle Alpine controls control_config_init_patch.install(); player_execute_action_patch.install(); + player_execute_action_high_index_patch.install(); player_execute_action_patch2.install(); player_execute_action_patch3.install(); controls_process_patch.install(); diff --git a/game_patch/main/main.cpp b/game_patch/main/main.cpp index 9a755879..352925fa 100644 --- a/game_patch/main/main.cpp +++ b/game_patch/main/main.cpp @@ -37,6 +37,7 @@ #include "../fflink/fflink.h" #include "../misc/misc.h" #include "../misc/achievements.h" +#include "../misc/spray_picker.h" #include "../misc/alpine_options.h" #include "../misc/alpine_settings.h" #include "../misc/vpackfile.h" @@ -200,6 +201,7 @@ CodeInjection after_frame_render_hook{ achievement_system_do_frame(); fullscreen_overlay_do_frame(); gas_region_transition_do_frame(); + spray_picker_render(); #if !defined(NDEBUG) && defined(HAS_EXPERIMENTAL) experimental_render(); #endif diff --git a/game_patch/misc/alpine_settings.cpp b/game_patch/misc/alpine_settings.cpp index fd1f7cfd..2dbb9bf1 100644 --- a/game_patch/misc/alpine_settings.cpp +++ b/game_patch/misc/alpine_settings.cpp @@ -949,6 +949,14 @@ bool alpine_player_settings_load(rf::Player* player) g_alpine_game_config.play_hit_sounds = std::stoi(settings["PlayHitsounds"]); processed_keys.insert("PlayHitsounds"); } + if (settings.count("SprayDisplay")) { + g_alpine_game_config.spray_display = std::stoi(settings["SprayDisplay"]); + processed_keys.insert("SprayDisplay"); + } + if (settings.count("SpraySelection")) { + g_alpine_game_config.set_selected_spray_index(std::stoi(settings["SpraySelection"])); + processed_keys.insert("SpraySelection"); + } if (settings.count("KillfeedEnabled")) { g_alpine_game_config.killfeed_enabled = std::stoi(settings["KillfeedEnabled"]); processed_keys.insert("KillfeedEnabled"); @@ -1474,6 +1482,8 @@ void alpine_player_settings_save(rf::Player* player) file << "WorldHUDTeamLabels=" << g_alpine_game_config.world_hud_team_player_labels << "\n"; file << "ShowLocationPings=" << g_alpine_game_config.show_location_pings << "\n"; file << "PlayHitsounds=" << g_alpine_game_config.play_hit_sounds << "\n"; + file << "SprayDisplay=" << g_alpine_game_config.spray_display << "\n"; + file << "SpraySelection=" << g_alpine_game_config.selected_spray_index << "\n"; file << "KillfeedEnabled=" << g_alpine_game_config.killfeed_enabled << "\n"; file << "HitSoundIntervalMs=" << g_alpine_game_config.hit_sound_min_interval_ms << "\n"; file << "PlayTaunts=" << g_alpine_game_config.play_taunt_sounds << "\n"; diff --git a/game_patch/misc/alpine_settings.h b/game_patch/misc/alpine_settings.h index 5f70ae02..13672be5 100644 --- a/game_patch/misc/alpine_settings.h +++ b/game_patch/misc/alpine_settings.h @@ -8,6 +8,9 @@ extern bool g_loaded_alpine_settings_file; +// forward declaration (in sprays.cpp) +int spray_count(); + struct AlpineGameSettings { // fov @@ -96,6 +99,14 @@ struct AlpineGameSettings bool show_location_pings = true; bool play_hit_sounds = true; + bool spray_display = true; + int selected_spray_index = 0; + void set_selected_spray_index(int index) + { + const int count = spray_count(); + selected_spray_index = (count > 0) ? std::clamp(index, 0, count - 1) : 0; + } + static constexpr int min_hit_sound_interval_ms = 0; static constexpr int max_hit_sound_interval_ms = 1000; int hit_sound_min_interval_ms = 20; diff --git a/game_patch/misc/player.cpp b/game_patch/misc/player.cpp index a5faf861..e733943c 100644 --- a/game_patch/misc/player.cpp +++ b/game_patch/misc/player.cpp @@ -23,6 +23,7 @@ #include "../multi/gametype.h" #include "../multi/server_internal.h" #include "../multi/bagman.h" +#include "../multi/sprays.h" #include "../multi/lms.h" #include "../hud/multi_spectate.h" #include "../hud/hud_internal.h" @@ -249,6 +250,7 @@ FunHook player_destroy_hook{ [](rf::Player* player) { multi_spectate_on_destroy_player(player); bagman_on_player_disconnect(player); + sprays_on_player_destroyed(player); lms_on_player_disconnect(player); if (rf::is_server) { remove_ready_player_silent(player); diff --git a/game_patch/misc/spray_picker.cpp b/game_patch/misc/spray_picker.cpp new file mode 100644 index 00000000..adad5b48 --- /dev/null +++ b/game_patch/misc/spray_picker.cpp @@ -0,0 +1,305 @@ +#include +#include +#include +#include "spray_picker.h" +#include "alpine_settings.h" +#include "../multi/sprays.h" +#include "../rf/gr/gr.h" +#include "../rf/gr/gr_font.h" +#include "../rf/bmpman.h" +#include "../rf/input.h" +#include "../rf/ui.h" +#include "../hud/hud.h" +#include "../hud/hud_internal.h" + +namespace +{ + bool g_open = false; + float g_scroll = 0.0f; + int g_cursor_x = 0; + int g_cursor_y = 0; + + constexpr float REF_WIDTH = 1280.0f; + constexpr float REF_HEIGHT = 800.0f; + constexpr float TARGET_THUMB = 160.0f; + constexpr int MIN_COLS = 2; + constexpr int MAX_COLS = 6; + + struct Layout + { + float scale; + int px, py, pw, ph; // panel rect + int content_x, content_y, content_w, content_h; // scrollable grid region (clip window) + int gap; // spacing between cells / edges + int thumb; // square thumbnail size + int cols; + int count; + int total_grid_h; // full (unclipped) height of all rows + int cancel_x, cancel_y, cancel_w, cancel_h; // Cancel button rect + }; + + Layout compute_layout() + { + Layout lo{}; + const int clip_w = rf::gr::clip_width(); + const int clip_h = rf::gr::clip_height(); + lo.scale = std::min(clip_w / REF_WIDTH, clip_h / REF_HEIGHT); + + const auto s = [&](float v) { return static_cast(v * lo.scale); }; + + // Compact panel that leaves a clear margin at every resolution. + lo.pw = std::min(s(880.0f), clip_w - 80); + lo.ph = std::min(s(600.0f), clip_h - 80); + lo.px = (clip_w - lo.pw) / 2; + lo.py = (clip_h - lo.ph) / 2; + + const int pad = s(16.0f); + const int title_h = s(46.0f); + const int footer_h = s(58.0f); + + lo.gap = std::max(4, s(14.0f)); + + lo.content_x = lo.px + pad; + lo.content_y = lo.py + title_h; + lo.content_w = lo.pw - 2 * pad; + lo.content_h = lo.ph - title_h - footer_h; + + // Derive column count from width and the target thumbnail size, then clamp. + const int target = std::max(1, s(TARGET_THUMB)); + lo.cols = std::clamp((lo.content_w - lo.gap) / (target + lo.gap), MIN_COLS, MAX_COLS); + lo.thumb = (lo.content_w - (lo.cols + 1) * lo.gap) / lo.cols; + if (lo.thumb < 1) { + lo.thumb = 1; + } + + lo.count = spray_count(); + const int rows = (lo.count + lo.cols - 1) / lo.cols; + lo.total_grid_h = rows * (lo.thumb + lo.gap) + lo.gap; + + lo.cancel_w = std::min(s(240.0f), lo.content_w); + lo.cancel_h = s(40.0f); + lo.cancel_x = lo.px + (lo.pw - lo.cancel_w) / 2; + lo.cancel_y = lo.py + lo.ph - footer_h + (footer_h - lo.cancel_h) / 2; + + return lo; + } + + // Screen rect of cell `i`, accounting for the current scroll offset. + void cell_rect(const Layout& lo, int i, int& out_x, int& out_y) + { + const int col = i % lo.cols; + const int row = i / lo.cols; + out_x = lo.content_x + lo.gap + col * (lo.thumb + lo.gap); + out_y = lo.content_y + lo.gap + row * (lo.thumb + lo.gap) - static_cast(g_scroll); + } + + float max_scroll(const Layout& lo) + { + return std::max(0.0f, static_cast(lo.total_grid_h - lo.content_h)); + } + + bool point_in(int px, int py, int x, int y, int w, int h) + { + return px >= x && px < x + w && py >= y && py < y + h; + } +} + +void spray_picker_open() +{ + g_open = true; + g_scroll = 0.0f; +} + +bool spray_picker_is_open() +{ + return g_open; +} + +void spray_picker_render() +{ + if (!g_open) { + return; + } + + const Layout lo = compute_layout(); + g_scroll = std::clamp(g_scroll, 0.0f, max_scroll(lo)); + + const int font = rf::ui::medium_font_0; + + // Use the stored menu cursor (screen/clip space) for hover feedback so it matches hit-testing. + const int mx = g_cursor_x; + const int my = g_cursor_y; + const bool cursor_in_content = point_in(mx, my, lo.content_x, lo.content_y, lo.content_w, lo.content_h); + + // Full-screen dim. + rf::gr::set_color(0, 0, 0, 192); + rf::gr::rect(0, 0, rf::gr::clip_width(), rf::gr::clip_height()); + + // Panel background + border. + rf::gr::set_color(20, 20, 20, 235); + rf::gr::rect(lo.px, lo.py, lo.pw, lo.ph); + rf::gr::set_color(120, 120, 120, 255); + hud_rect_border(lo.px, lo.py, lo.pw, lo.ph, std::max(1, static_cast(2 * lo.scale))); + + // Title. + rf::gr::set_color(255, 255, 255, 255); + rf::gr::string_aligned(rf::gr::ALIGN_CENTER, lo.px + lo.pw / 2, + lo.py + static_cast(14 * lo.scale), "Select Spray", font); + + // Grid (clipped to the content region, drawn with scroll offset). + int save_cx = 0, save_cy = 0, save_cw = 0, save_ch = 0; + rf::gr::get_clip(&save_cx, &save_cy, &save_cw, &save_ch); + rf::gr::set_clip(lo.content_x, lo.content_y, lo.content_w, lo.content_h); + + // Which cell is the cursor over (only if it is inside the visible content region)? + int hovered = -1; + + for (int i = 0; i < lo.count; ++i) { + int cx = 0, cy = 0; + cell_rect(lo, i, cx, cy); // ABSOLUTE screen coords (used for hit-test + cull) + + // Skip cells fully outside the content region (cheap vertical cull, absolute coords). + if (cy + lo.thumb < lo.content_y || cy > lo.content_y + lo.content_h) { + continue; + } + + if (cursor_in_content && point_in(mx, my, cx, cy, lo.thumb, lo.thumb)) { + hovered = i; + } + + // set_clip moved the drawing origin to (content_x, content_y), so everything drawn while + // the clip is active must use coords RELATIVE to that origin. The absolute cx/cy above are + // still what hit-testing (and the cursor) use, so draw at cx-content_x / cy-content_y. + const int dx = cx - lo.content_x; + const int dy = cy - lo.content_y; + + const int bm = spray_get_bitmap(static_cast(i)); + if (bm >= 0) { + int bw = 0, bh = 0; + rf::bm::get_dimensions(bm, &bw, &bh); + rf::gr::set_color(255, 255, 255, 255); + rf::gr::bitmap_scaled(bm, dx, dy, lo.thumb, lo.thumb, 0, 0, bw, bh, false, false, + rf::gr::bitmap_clamp_mode); + } + else { + // Placeholder tile + (truncated) filename for a texture that failed to load. + rf::gr::set_color(50, 50, 50, 255); + rf::gr::rect(dx, dy, lo.thumb, lo.thumb); + rf::gr::set_color(90, 90, 90, 255); + hud_rect_border(dx, dy, lo.thumb, lo.thumb, 1); + const char* name = spray_texture_name(static_cast(i)); + if (name) { + const std::string fit = hud_fit_string(name, lo.thumb - static_cast(8 * lo.scale), + nullptr, font); + rf::gr::set_color(200, 200, 200, 255); + rf::gr::string_aligned(rf::gr::ALIGN_CENTER, dx + lo.thumb / 2, dy + lo.thumb / 2, + fit.c_str(), font); + } + } + + // Selected: bright green border. Hovered: subtle white border. + if (i == g_alpine_game_config.selected_spray_index) { + rf::gr::set_color(120, 230, 120, 255); + hud_rect_border(dx - 2, dy - 2, lo.thumb + 4, lo.thumb + 4, + std::max(2, static_cast(3 * lo.scale))); + } + else if (i == hovered) { + rf::gr::set_color(255, 255, 255, 200); + hud_rect_border(dx - 1, dy - 1, lo.thumb + 2, lo.thumb + 2, + std::max(1, static_cast(2 * lo.scale))); + } + + // Index badge: a small darkened box in the bottom-right corner showing this spray's number. + { + const std::string num = std::to_string(i); + const int fh = rf::gr::get_font_height(font); + const auto num_size = rf::gr::get_string_size(num, font); + const int bpad = std::max(2, static_cast(3 * lo.scale)); + const int box_w = num_size.first + bpad * 2; + const int box_h = fh + bpad; + const int box_x = dx + lo.thumb - box_w; + const int box_y = dy + lo.thumb - box_h; + rf::gr::set_color(0, 0, 0, 180); + rf::gr::rect(box_x, box_y, box_w, box_h); + rf::gr::set_color(255, 255, 255, 255); + rf::gr::string_aligned(rf::gr::ALIGN_CENTER, box_x + box_w / 2, + box_y + (box_h - fh) / 2, num.c_str(), font); + } + } + + // Restore the caller's clip window before drawing chrome outside the content region. + rf::gr::set_clip(save_cx, save_cy, save_cw, save_ch); + + // Scrollbar if the grid overflows the content region. + const float ms = max_scroll(lo); + if (ms > 0.0f) { + const float ratio = g_scroll / ms; + const float bar_h = static_cast(lo.content_h) * lo.content_h / lo.total_grid_h; + const float bar_y = lo.content_y + ratio * (lo.content_h - bar_h); + const int bar_w = std::max(4, static_cast(6 * lo.scale)); + const int bar_x = lo.content_x + lo.content_w - bar_w; + rf::gr::set_color(140, 200, 160, 255); + rf::gr::rect(bar_x, std::lround(bar_y), bar_w, std::lround(bar_h)); + } + + // Cancel button, brighten on hover. + const bool cancel_hover = point_in(mx, my, lo.cancel_x, lo.cancel_y, lo.cancel_w, lo.cancel_h); + rf::gr::set_color(cancel_hover ? 70 : 45, cancel_hover ? 70 : 45, cancel_hover ? 70 : 45, 255); + rf::gr::rect(lo.cancel_x, lo.cancel_y, lo.cancel_w, lo.cancel_h); + rf::gr::set_color(150, 150, 150, 255); + hud_rect_border(lo.cancel_x, lo.cancel_y, lo.cancel_w, lo.cancel_h, 1); + rf::gr::set_color(255, 255, 255, 255); + rf::gr::string_aligned(rf::gr::ALIGN_CENTER, lo.cancel_x + lo.cancel_w / 2, + lo.cancel_y + (lo.cancel_h - rf::gr::get_font_height(font)) / 2, "Cancel (Esc)", font); +} + +void spray_picker_handle_mouse(int x, int y) +{ + if (!g_open) { + return; + } + + g_cursor_x = x; + g_cursor_y = y; + + const Layout lo = compute_layout(); + + // Mouse wheel scrolls the grid (one row per notch). + if (rf::mouse_dz != 0) { + const float step = static_cast(lo.thumb + lo.gap); + g_scroll += (rf::mouse_dz > 0 ? -step : step); + g_scroll = std::clamp(g_scroll, 0.0f, max_scroll(lo)); + } + + if (rf::mouse_was_button_pressed(0)) { + // Cancel button closes without changing the selection. + if (point_in(x, y, lo.cancel_x, lo.cancel_y, lo.cancel_w, lo.cancel_h)) { + g_open = false; + return; + } + // Clicks only count inside the visible content region (so scrolled-off cells never hit). + if (point_in(x, y, lo.content_x, lo.content_y, lo.content_w, lo.content_h)) { + for (int i = 0; i < lo.count; ++i) { + int cx = 0, cy = 0; + cell_rect(lo, i, cx, cy); + if (point_in(x, y, cx, cy, lo.thumb, lo.thumb)) { + g_alpine_game_config.set_selected_spray_index(i); + g_open = false; + return; + } + } + } + } +} + +void spray_picker_handle_key(rf::Key* key) +{ + if (!g_open) { + return; + } + if (*key == rf::Key::KEY_ESC) { + g_open = false; + } + // Swallow every key while the modal is open so nothing leaks to the options menu. + *key = rf::Key::KEY_NONE; +} diff --git a/game_patch/misc/spray_picker.h b/game_patch/misc/spray_picker.h new file mode 100644 index 00000000..84de27fa --- /dev/null +++ b/game_patch/misc/spray_picker.h @@ -0,0 +1,9 @@ +#pragma once + +#include "../rf/input.h" + +void spray_picker_open(); +bool spray_picker_is_open(); +void spray_picker_render(); +void spray_picker_handle_mouse(int x, int y); +void spray_picker_handle_key(rf::Key* key); diff --git a/game_patch/misc/ui.cpp b/game_patch/misc/ui.cpp index c1f86a09..fca1e2e7 100644 --- a/game_patch/misc/ui.cpp +++ b/game_patch/misc/ui.cpp @@ -8,6 +8,8 @@ #include #include "alpine_settings.h" #include "misc.h" +#include "spray_picker.h" +#include "../multi/sprays.h" #include "../main/main.h" #include "../graphics/gr.h" #include "../os/os.h" @@ -192,6 +194,10 @@ static rf::ui::Checkbox ao_exposuredamage_cbox; static rf::ui::Label ao_exposuredamage_label; static rf::ui::Checkbox ao_painsounds_cbox; static rf::ui::Label ao_painsounds_label; +static rf::ui::Checkbox ao_spray_btn; +static rf::ui::Label ao_spray_label; +static rf::ui::Label ao_spray_but_label; +static char ao_spray_butlabel_text[8]; // levelsounds audio options slider std::vector alpine_audio_panel_settings; @@ -1033,7 +1039,17 @@ void ao_enemybullets_cbox_on_click(int x, int y) { ao_play_button_snd(g_alpine_game_config.show_enemy_bullets); } +void ao_spray_btn_on_click(int x, int y) { + spray_picker_open(); + rf::snd_play(stock_sound_id::menu_select, 0, 0.0f, 1.0f); +} + void alpine_options_panel_handle_key(rf::Key* key){ + // spray picker modal captures all input while open + if (spray_picker_is_open()) { + spray_picker_handle_key(key); + return; + } // todo: more key support (tab, etc.) // close panel on escape if (*key == rf::Key::KEY_ESC) { @@ -1044,6 +1060,12 @@ void alpine_options_panel_handle_key(rf::Key* key){ } void alpine_options_panel_handle_mouse(int x, int y) { + // spray picker modal captures all input while open + if (spray_picker_is_open()) { + spray_picker_handle_mouse(x, y); + return; + } + int hovered_index = -1; //xlog::warn("handling mouse {}, {}", x, y); @@ -1208,8 +1230,8 @@ void alpine_options_panel_init() { &ao_simdist_cbox, &ao_simdist_label, &ao_simdist_butlabel, &alpine_options_panel0, ao_simdist_cbox_on_click, 112, 262, "Simulation dist"); alpine_options_panel_checkbox_init( &ao_unclamplights_cbox, &ao_unclamplights_label, &alpine_options_panel0, ao_unclamplights_cbox_on_click, g_alpine_game_config.full_range_lighting, 112, 292, "Full light range"); - alpine_options_panel_checkbox_init( - &ao_nearest_cbox, &ao_nearest_label, &alpine_options_panel0, ao_nearest_cbox_on_click, g_alpine_game_config.nearest_texture_filtering, 112, 322, "Nearest filtering"); + alpine_options_panel_inputbox_init( + &ao_spray_btn, &ao_spray_label, &ao_spray_but_label, &alpine_options_panel0, ao_spray_btn_on_click, 112, 322, "Select spray"); alpine_options_panel_checkbox_init( &ao_camshake_cbox, &ao_camshake_label, &alpine_options_panel0, ao_camshake_cbox_on_click, !g_alpine_game_config.screen_shake_force_off, 280, 54, "View shake (SP)"); @@ -1232,6 +1254,8 @@ void alpine_options_panel_init() { &ao_firelights_cbox, &ao_firelights_label, &alpine_options_panel0, ao_firelights_cbox_on_click, !g_alpine_game_config.try_disable_muzzle_flash_lights, 280, 262, "Muzzle lights"); alpine_options_panel_checkbox_init( &ao_mpcharlod_cbox, &ao_mpcharlod_label, &alpine_options_panel0, ao_mpcharlod_cbox_on_click, !g_alpine_game_config.multi_no_character_lod, 280, 292, "Entity LOD (MP)"); + alpine_options_panel_checkbox_init( + &ao_nearest_cbox, &ao_nearest_label, &alpine_options_panel0, ao_nearest_cbox_on_click, g_alpine_game_config.nearest_texture_filtering, 280, 322, "Nearest filtering"); // panel 1 @@ -1442,6 +1466,10 @@ void alpine_options_panel_do_frame(int x) snprintf(ao_simdist_butlabel_text, sizeof(ao_simdist_butlabel_text), "%6.2f", g_alpine_game_config.entity_sim_distance); ao_simdist_butlabel.text = ao_simdist_butlabel_text; + // selected spray index (refreshes automatically when the picker changes the selection) + snprintf(ao_spray_butlabel_text, sizeof(ao_spray_butlabel_text), "%d", g_alpine_game_config.selected_spray_index); + ao_spray_but_label.text = ao_spray_butlabel_text; + // mesh lighting snprintf(ao_meshlight_butlabel_text, sizeof(ao_meshlight_butlabel_text), "%s", meshlight_mode_names[std::clamp(g_alpine_game_config.mesh_lighting_mode, 0, 2)]); @@ -1651,6 +1679,19 @@ CodeInjection options_handle_mouse_patch{ }, }; +FunHook options_mouse_handler_hook{ + 0x0044F530, + []() { + if (spray_picker_is_open()) { + int x = 0, y = 0, z = 0; + rf::mouse_get_pos(x, y, z); + spray_picker_handle_mouse(x, y); + return; // do not run stock options mouse handling + } + options_mouse_handler_hook.call_target(); + }, +}; + // unhighlight buttons when not active CodeInjection options_do_frame_unhighlight_buttons_patch{ 0x0044F1E1, @@ -1872,6 +1913,7 @@ void ui_apply_patch() options_do_frame_unhighlight_buttons_patch.install(); options_handle_key_patch.install(); options_handle_mouse_patch.install(); + options_mouse_handler_hook.install(); AsmWriter{0x0044F550}.push(6); // num buttons in options menu AsmWriter{0x0044F552}.push(&new_gadgets); // support mouseover for alpine options button AsmWriter{0x0044F285}.push(5); // back button index, used when hitting esc in options menu diff --git a/game_patch/multi/alpine_packets.cpp b/game_patch/multi/alpine_packets.cpp index 172bd0c2..2e8ae264 100644 --- a/game_patch/multi/alpine_packets.cpp +++ b/game_patch/multi/alpine_packets.cpp @@ -20,6 +20,7 @@ #include "server.h" #include "../hud/hud_world.h" #include "alpine_packets.h" +#include "sprays.h" #include "bagman.h" #include "../misc/player.h" #include "../hud/hud.h" @@ -578,6 +579,17 @@ void serialize_payload(const HandicapPayload& payload, std::byte* buf, size_t& o buf[offset++] = static_cast(payload.amount); } +// af_req_spray +void serialize_payload(const SprayReqPayload& payload, std::byte* buf, size_t& offset) +{ + std::memcpy(buf + offset, &payload.texture_id, sizeof(payload.texture_id)); + offset += sizeof(payload.texture_id); + std::memcpy(buf + offset, &payload.pos, sizeof(payload.pos)); + offset += sizeof(payload.pos); + std::memcpy(buf + offset, &payload.normal, sizeof(payload.normal)); + offset += sizeof(payload.normal); +} + // af_req_server_cfg void serialize_payload(const std::monostate& payload, const std::byte* const buf, const size_t& offset) { @@ -604,6 +616,21 @@ void serialize_payload(const TeleportEntityPayload& payload, std::byte* buf, siz offset += sizeof(payload.vel); } +// af_sreq_spray +void serialize_payload(const SprayPayload& payload, std::byte* buf, size_t& offset) +{ + std::memcpy(buf + offset, &payload.player_id, sizeof(payload.player_id)); + offset += sizeof(payload.player_id); + std::memcpy(buf + offset, &payload.texture_id, sizeof(payload.texture_id)); + offset += sizeof(payload.texture_id); + std::memcpy(buf + offset, &payload.pos, sizeof(payload.pos)); + offset += sizeof(payload.pos); + std::memcpy(buf + offset, &payload.normal, sizeof(payload.normal)); + offset += sizeof(payload.normal); + std::memcpy(buf + offset, &payload.flags, sizeof(payload.flags)); + offset += sizeof(payload.flags); +} + void af_send_server_cfg_request() { if (!rf::is_multi || rf::is_server) { return; @@ -618,6 +645,29 @@ void af_send_server_cfg_request() { af_send_client_req_packet(client_req_packet); } +void af_send_spray_request(uint16_t texture_id, const rf::Vector3& pos, const rf::Vector3& normal) +{ + // Send: client -> server + if (!rf::is_multi || rf::is_server) { + return; + } + + SprayReqPayload payload{}; + payload.texture_id = texture_id; + static_assert(sizeof(payload.pos) == sizeof(rf::Vector3), "RF_Vector / rf::Vector3 layout mismatch"); + std::memcpy(&payload.pos, &pos, sizeof(payload.pos)); + std::memcpy(&payload.normal, &normal, sizeof(payload.normal)); + + af_client_req_packet packet{}; + packet.header.type = static_cast(af_packet_type::af_client_req); + packet.header.size = sizeof(uint8_t) + sizeof(payload.texture_id) + sizeof(payload.pos) + sizeof(payload.normal); + packet.req_type = af_client_req_type::af_req_spray; + packet.payload = payload; + + //xlog::info("sprays: sending af_req_spray to server (id={})", texture_id); + af_send_client_req_packet(packet); +} + // send client request packet void af_send_client_req_packet(const af_client_req_packet& packet) { @@ -711,6 +761,31 @@ static void af_process_client_req_packet(const void* data, size_t len, const rf: } break; } + case af_client_req_type::af_req_spray: { + constexpr size_t expected = sizeof(uint16_t) + sizeof(RF_Vector) + sizeof(RF_Vector); + if (remaining < expected) { + xlog::warn("af_process_client_req_packet: Spray payload too short ({} < {})", remaining, expected); + return; + } + + uint16_t texture_id = 0; + RF_Vector pos{}; + RF_Vector normal{}; + std::memcpy(&texture_id, bytes + offset, sizeof(texture_id)); + offset += sizeof(texture_id); + std::memcpy(&pos, bytes + offset, sizeof(pos)); + offset += sizeof(pos); + std::memcpy(&normal, bytes + offset, sizeof(normal)); + offset += sizeof(normal); + + rf::Vector3 spray_pos; + rf::Vector3 spray_normal; + std::memcpy(&spray_pos, &pos, sizeof(spray_pos)); + std::memcpy(&spray_normal, &normal, sizeof(spray_normal)); + + sprays_handle_spray_request(player, texture_id, spray_pos, spray_normal); + break; + } default: { xlog::debug("af_process_client_req_packet: unknown req_type {}", static_cast(req_type)); return; @@ -789,6 +864,58 @@ void af_send_teleport_entity_req( } } +void af_send_spray_to_player(uint8_t player_id, uint16_t texture_id, const rf::Vector3& pos, + const rf::Vector3& normal, uint8_t flags, rf::Player* player) +{ + if (!rf::is_server || !player || !player->net_data) { + return; + } + if (!is_player_minimum_af_client_version(player, 1, 4, 0)) { + return; + } + + SprayPayload payload{}; + payload.player_id = player_id; + payload.texture_id = texture_id; + static_assert(sizeof(payload.pos) == sizeof(rf::Vector3), "RF_Vector / rf::Vector3 layout mismatch"); + std::memcpy(&payload.pos, &pos, sizeof(payload.pos)); + std::memcpy(&payload.normal, &normal, sizeof(payload.normal)); + payload.flags = flags; + + af_server_req_packet packet{}; + packet.header.type = static_cast(af_packet_type::af_server_req); + packet.header.size = sizeof(uint8_t) + sizeof(payload.player_id) + sizeof(payload.texture_id) + + sizeof(payload.pos) + sizeof(payload.normal) + sizeof(payload.flags); + packet.req_type = af_server_req_type::af_sreq_spray; + packet.payload = payload; + + af_send_server_req_packet(packet, player); +} + +void af_broadcast_spray(uint8_t player_id, uint16_t texture_id, const rf::Vector3& pos, const rf::Vector3& normal) +{ + if (!rf::is_server) { + return; + } + + int sent = 0; + int skipped = 0; + for (rf::Player& player : SinglyLinkedList{rf::player_list}) { + if (&player == rf::local_player) { + continue; // listen-server host renders locally instead + } + // Recipients (including the requesting player) are gated on AF 1.4 inside the sender. + if (is_player_minimum_af_client_version(&player, 1, 4, 0)) { + af_send_spray_to_player(player_id, texture_id, pos, normal, 0, &player); + ++sent; + } + else { + ++skipped; + } + } + //xlog::info("sprays: broadcast spray for player_id {} to {} clients ({} pre-1.4 skipped)", player_id, sent, skipped); +} + static void af_process_server_req_packet(const void* data, size_t len, const rf::NetAddr&) { // Receive: client <- server @@ -907,6 +1034,42 @@ static void af_process_server_req_packet(const void* data, size_t len, const rf: } break; } + case af_server_req_type::af_sreq_spray: { + constexpr size_t expected = + sizeof(uint8_t) + sizeof(uint16_t) + sizeof(RF_Vector) + sizeof(RF_Vector) + sizeof(uint8_t); + if (remaining < expected) { + xlog::warn("af_process_server_req_packet: Spray payload too short ({} < {})", remaining, expected); + return; + } + + uint8_t player_id = 0; + uint16_t texture_id = 0; + RF_Vector pos{}; + RF_Vector normal{}; + uint8_t flags = 0; + std::memcpy(&player_id, bytes + offset, sizeof(player_id)); + offset += sizeof(player_id); + std::memcpy(&texture_id, bytes + offset, sizeof(texture_id)); + offset += sizeof(texture_id); + std::memcpy(&pos, bytes + offset, sizeof(pos)); + offset += sizeof(pos); + std::memcpy(&normal, bytes + offset, sizeof(normal)); + offset += sizeof(normal); + std::memcpy(&flags, bytes + offset, sizeof(flags)); + offset += sizeof(flags); + + rf::Vector3 spray_pos; + rf::Vector3 spray_normal; + std::memcpy(&spray_pos, &pos, sizeof(spray_pos)); + std::memcpy(&spray_normal, &normal, sizeof(spray_normal)); + + //xlog::info("sprays: received af_sreq_spray (player_id={}, id={}, flags={:#x})", player_id, texture_id, flags); + + // Unknown/reserved flag bits are ignored. + const bool play_sound = (flags & AF_SPRAY_FLAG_SILENT) == 0; + sprays_apply_client_state(player_id, texture_id, spray_pos, spray_normal, play_sound); + break; + } default: xlog::debug("af_process_server_req_packet: unknown req_type {}", static_cast(req_type)); break; @@ -1532,6 +1695,8 @@ static void build_af_server_info_packet(af_server_info_packet& pkt) af |= af_server_info_flags::SIF_CLEAR_STALE_MOVEMENT_INPUT; if (was_level_loaded_manually()) af |= af_server_info_flags::SIF_MANUAL_LEVEL_LOAD; + if (server_sprays_enabled()) + af |= af_server_info_flags::SIF_ALLOW_SPRAYS; if (g_alpine_server_config.signal_cfg_changed) { af |= af_server_info_flags::SIF_SERVER_CFG_CHANGED; for (rf::Player& player : SinglyLinkedList{rf::player_list}) { @@ -1615,6 +1780,7 @@ static void decode_af_server_info_flags(const af_server_info_packet& pkt, Alpine server_info.allow_outlines_xray = (pkt.af_flags & af_server_info_flags::SIF_ALLOW_OUTLINES_XRAY) != 0; server_info.clear_stale_movement_input = (pkt.af_flags & af_server_info_flags::SIF_CLEAR_STALE_MOVEMENT_INPUT) != 0; server_info.was_manual_level_load = (pkt.af_flags & af_server_info_flags::SIF_MANUAL_LEVEL_LOAD) != 0; + server_info.allow_sprays = (pkt.af_flags & af_server_info_flags::SIF_ALLOW_SPRAYS) != 0; } // Apply af_server_info_packet flags to the local server info (for listen server host) diff --git a/game_patch/multi/alpine_packets.h b/game_patch/multi/alpine_packets.h index cb385c40..84116f6a 100644 --- a/game_patch/multi/alpine_packets.h +++ b/game_patch/multi/alpine_packets.h @@ -80,6 +80,7 @@ enum class af_client_req_type : uint8_t { af_req_handicap = 0x0, af_req_server_cfg = 0x1, + af_req_spray = 0x2, }; struct HandicapPayload @@ -87,7 +88,15 @@ struct HandicapPayload uint8_t amount = 0; }; -using af_client_payload = std::variant; +struct SprayReqPayload +{ + uint16_t texture_id = 0; + RF_Vector pos = {}; + RF_Vector normal = {}; +}; +static_assert(sizeof(SprayReqPayload) == 26); + +using af_client_payload = std::variant; struct af_client_req_packet { @@ -100,6 +109,7 @@ enum class af_server_req_type : uint8_t { af_sreq_should_gib = 0x0, af_sreq_teleport_entity = 0x1, // Alpine 1.4 + af_sreq_spray = 0x2, // Alpine 1.4 }; struct ShouldGibPayload @@ -115,7 +125,22 @@ struct TeleportEntityPayload RF_Vector vel = {}; }; -using af_server_req_payload = std::variant; +enum af_spray_flags : uint8_t +{ + AF_SPRAY_FLAG_SILENT = 1 << 0, +}; + +struct SprayPayload +{ + uint8_t player_id = 0; + uint16_t texture_id = 0; + RF_Vector pos = {}; + RF_Vector normal = {}; + uint8_t flags = 0; // af_spray_flags +}; +static_assert(sizeof(SprayPayload) == 28); + +using af_server_req_payload = std::variant; struct af_server_req_packet { @@ -254,6 +279,7 @@ enum af_server_info_flags : uint32_t { SIF_ALLOW_OUTLINES_XRAY = 1u << 16, SIF_CLEAR_STALE_MOVEMENT_INPUT = 1u << 17, SIF_MANUAL_LEVEL_LOAD = 1u << 18, + SIF_ALLOW_SPRAYS = 1u << 19, }; // Subset of `rf::NetGameFlags`. @@ -430,6 +456,8 @@ static void af_process_client_req_packet(const void* data, size_t len, const rf: void af_send_server_req_packet(const af_server_req_packet& packet, rf::Player* player); void af_send_should_gib_req(uint32_t obj_handle); void af_send_teleport_entity_req(uint32_t obj_handle, const rf::Vector3& pos, const rf::Matrix3& orient, const rf::Vector3& vel); +void af_send_spray_to_player(uint8_t player_id, uint16_t texture_id, const rf::Vector3& pos, const rf::Vector3& normal, uint8_t flags, rf::Player* player); +void af_broadcast_spray(uint8_t player_id, uint16_t texture_id, const rf::Vector3& pos, const rf::Vector3& normal); static void af_process_server_req_packet(const void* data, size_t len, const rf::NetAddr& addr); void af_send_just_spawned_loadout(rf::Player* to_player, std::vector loadout); static void af_process_just_spawned_info_packet(const void* data, size_t len, const rf::NetAddr& addr); @@ -469,6 +497,7 @@ void af_send_server_console_msg(std::string_view msg, rf::Player* player, bool t // client requests void af_send_handicap_request(uint8_t amount); void af_send_server_cfg_request(); +void af_send_spray_request(uint16_t texture_id, const rf::Vector3& pos, const rf::Vector3& normal); // server bot control void af_send_bot_control_simple(rf::Player* player, af_bot_control_type subtype); diff --git a/game_patch/multi/dedi_cfg.cpp b/game_patch/multi/dedi_cfg.cpp index be784947..908ca3c3 100644 --- a/game_patch/multi/dedi_cfg.cpp +++ b/game_patch/multi/dedi_cfg.cpp @@ -842,6 +842,19 @@ static DamageNotificationConfig parse_damage_notification_config(const toml::tab return o; } +static SprayConfig parse_spray_config(const toml::table& t) +{ + SprayConfig o; + if (auto v = t["enabled"].value()) + o.enabled = *v; + + if (o.enabled) { + if (auto v = t["cooldown_ms"].value()) + o.cooldown_ms = std::clamp(static_cast(*v), 0, 600000); + } + return o; +} + static AlpineRestrictConfig parse_alpine_restrict_config(const toml::table &t) { AlpineRestrictConfig o; @@ -1279,6 +1292,8 @@ static void apply_known_table_in_order( cfg.inactivity_config = parse_inactivity_config(tbl); else if (key == "damage_notifications") cfg.damage_notification_config = parse_damage_notification_config(tbl); + else if (key == "sprays") + cfg.spray_config = parse_spray_config(tbl); else if (key == "alpine_restrict") cfg.alpine_restricted_config = parse_alpine_restrict_config(tbl); else if (key == "click_limiter") @@ -2185,6 +2200,12 @@ void print_alpine_dedicated_server_config_info(std::string& output, bool verbose std::format_to(iter, " Legacy client compatibility: {}\n", cfg.damage_notification_config.support_legacy_clients); } + // sprays + std::format_to(iter, " Sprays: {}\n", cfg.spray_config.enabled); + if (cfg.spray_config.enabled) { + std::format_to(iter, " Cooldown: {} ms\n", cfg.spray_config.cooldown_ms); + } + // alpine restrict std::format_to(iter, " Advertise Alpine: {}\n", cfg.alpine_restricted_config.advertise_alpine); std::format_to(iter, " Only welcome Alpine players: {}\n", cfg.alpine_restricted_config.only_welcome_alpine); diff --git a/game_patch/multi/kill.cpp b/game_patch/multi/kill.cpp index 271c64e7..2ef13a51 100644 --- a/game_patch/multi/kill.cpp +++ b/game_patch/multi/kill.cpp @@ -21,6 +21,7 @@ #include "server_internal.h" #include "multi_private.h" #include "alpine_packets.h" +#include "sprays.h" #include "../misc/player.h" #include "../misc/misc.h" #include "kill.h" @@ -351,6 +352,9 @@ FunHook multi_level_init_hook{ multi_level_init_hook.call_target(); + // Clear all sprays on both client and server when a new level loads. + sprays_level_init(); + // Stop allowing endgame votes after the next level starts multi_player_set_can_endgame_vote(false); diff --git a/game_patch/multi/lms.cpp b/game_patch/multi/lms.cpp index dbab4972..275bbd39 100644 --- a/game_patch/multi/lms.cpp +++ b/game_patch/multi/lms.cpp @@ -326,7 +326,7 @@ bool lms_can_round_start() // us start while players are still mid-load, racing the spawn pipeline. int loaded = 0; for (rf::Player& p : SinglyLinkedList{rf::player_list}) { - if (p.is_browser) continue; + if (p.is_browser || p.is_spectator) continue; if (!player_is_loaded(&p)) continue; if (++loaded >= 2) return true; } diff --git a/game_patch/multi/multi.cpp b/game_patch/multi/multi.cpp index 9727a8b7..32ca0ba7 100644 --- a/game_patch/multi/multi.cpp +++ b/game_patch/multi/multi.cpp @@ -14,6 +14,7 @@ #include "endgame_votes.h" #include "multi_private.h" #include "alpine_packets.h" +#include "sprays.h" #include "server_internal.h" #include "gametype.h" #include "rounds.h" @@ -1216,6 +1217,7 @@ void multi_do_patch() multi_customize_listen_server_settings_patch.install(); multi_kill_do_patch(); + sprays_do_patch(); faction_files_do_patch(); level_download_do_patch(); network_init(); diff --git a/game_patch/multi/multi.h b/game_patch/multi/multi.h index 6ef634a4..5c9f4ced 100644 --- a/game_patch/multi/multi.h +++ b/game_patch/multi/multi.h @@ -109,6 +109,7 @@ struct AlpineFactionServerInfo bool allow_outlines_xray = false; bool clear_stale_movement_input = false; bool was_manual_level_load = false; + bool allow_sprays = false; }; enum class AlpineRestrictVerdict : uint8_t diff --git a/game_patch/multi/network.cpp b/game_patch/multi/network.cpp index f531f749..6620ffd7 100644 --- a/game_patch/multi/network.cpp +++ b/game_patch/multi/network.cpp @@ -30,6 +30,7 @@ #include "alpine_packets.h" #include "server.h" #include "server_internal.h" +#include "sprays.h" #include "bots/bot_chat_manager.h" #include "../main/main.h" #include "../os/os.h" @@ -1668,6 +1669,9 @@ CallHook send_join_accept_packet_ho if (server_clear_stale_movement_input()) { ext_data.flags |= AlpineFactionJoinAcceptPacketExt::Flags::clear_stale_movement_input; } + if (server_sprays_enabled()) { + ext_data.flags |= AlpineFactionJoinAcceptPacketExt::Flags::allow_sprays; + } // AF 1.3+ clients: use footer-based format for forward compatibility // Older clients: use legacy raw struct (they don't know about the footer) bool use_footer = g_joining_client_version == ClientSoftware::AlpineFaction @@ -1803,6 +1807,7 @@ CodeInjection process_join_accept_injection{ server_info.allow_outlines = !!(ext_data.flags & AlpineFactionJoinAcceptPacketExt::Flags::allow_outlines); server_info.allow_outlines_xray = !!(ext_data.flags & AlpineFactionJoinAcceptPacketExt::Flags::allow_outlines_xray); server_info.clear_stale_movement_input = !!(ext_data.flags & AlpineFactionJoinAcceptPacketExt::Flags::clear_stale_movement_input); + server_info.allow_sprays = !!(ext_data.flags & AlpineFactionJoinAcceptPacketExt::Flags::allow_sprays); constexpr float default_fov = 90.0f; if (!!(ext_data.flags & AlpineFactionJoinAcceptPacketExt::Flags::max_fov) && ext_data.max_fov >= default_fov) { @@ -2621,6 +2626,7 @@ CodeInjection send_state_info_injection{ rf::Player* player = regs.edi; trigger_send_state_info(player); pf_player_level_load(player); + sprays_force_state_sync_to(player); }, }; diff --git a/game_patch/multi/network.h b/game_patch/multi/network.h index 691147dd..1daee42e 100644 --- a/game_patch/multi/network.h +++ b/game_patch/multi/network.h @@ -187,6 +187,7 @@ struct AlpineFactionJoinAcceptPacketExt allow_outlines = 1u << 14, allow_outlines_xray = 1u << 15, clear_stale_movement_input = 1u << 16, + allow_sprays = 1u << 17, } flags = Flags::none; float max_fov = 0.0f; diff --git a/game_patch/multi/server.cpp b/game_patch/multi/server.cpp index 8e7801c5..6dd15795 100644 --- a/game_patch/multi/server.cpp +++ b/game_patch/multi/server.cpp @@ -21,6 +21,7 @@ #include "server.h" #include "server_internal.h" #include "alpine_packets.h" +#include "sprays.h" #include "multi.h" #include "gametype.h" #include "bagman.h" @@ -2120,6 +2121,9 @@ FunHook multi_spawn_player_server_side_hook{ if (player->is_browser) { return; } + if (player->is_spectator) { + return; + } if (!check_can_player_spawn(player)) { return; } @@ -3818,6 +3822,16 @@ bool server_allow_footsteps() return g_alpine_server_config.allow_footsteps; } +bool server_sprays_enabled() +{ + return g_alpine_server_config.spray_config.enabled; +} + +int server_spray_cooldown_ms() +{ + return g_alpine_server_config.spray_config.cooldown_ms; +} + std::tuple server_features_require_alpine_client() { bool requires_alpine = false; // alpine required to spawn diff --git a/game_patch/multi/server.h b/game_patch/multi/server.h index 67683dca..a10c19e3 100644 --- a/game_patch/multi/server.h +++ b/game_patch/multi/server.h @@ -33,6 +33,8 @@ bool server_gaussian_spread(); bool server_geo_chunk_physics(); bool server_clear_stale_movement_input(); bool server_allow_footsteps(); +bool server_sprays_enabled(); +int server_spray_cooldown_ms(); std::tuple server_features_require_alpine_client(); void server_reliable_socket_ready(rf::Player* player); bool server_weapon_items_give_full_ammo(); diff --git a/game_patch/multi/server_internal.h b/game_patch/multi/server_internal.h index 4fdf9bd4..ee18529d 100644 --- a/game_patch/multi/server_internal.h +++ b/game_patch/multi/server_internal.h @@ -228,6 +228,12 @@ struct DamageNotificationConfig bool support_legacy_clients = true; }; +struct SprayConfig +{ + bool enabled = true; + int cooldown_ms = 10000; +}; + struct CriticalHitsConfig { bool enabled = false; @@ -792,6 +798,7 @@ struct AlpineServerConfig AlpineRestrictConfig alpine_restricted_config; InactivityConfig inactivity_config; DamageNotificationConfig damage_notification_config; + SprayConfig spray_config; ClickLimiterConfig click_limiter_config; VoteConfig vote_match; VoteConfig vote_kick; diff --git a/game_patch/multi/sprays.cpp b/game_patch/multi/sprays.cpp new file mode 100644 index 00000000..2fa6cf77 --- /dev/null +++ b/game_patch/multi/sprays.cpp @@ -0,0 +1,575 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include "sprays.h" +#include "alpine_packets.h" +#include "server.h" +#include "multi.h" +#include "../misc/player.h" +#include "../misc/alpine_settings.h" +#include "../sound/sound.h" +#include "../os/console.h" +#include "../os/os.h" +#include "../rf/geometry.h" +#include "../rf/collide.h" +#include "../rf/level.h" +#include "../rf/bmpman.h" +#include "../rf/entity.h" +#include "../rf/multi.h" +#include "../rf/os/timer.h" +#include "../rf/math/vector.h" +#include "../rf/math/matrix.h" +#include "../rf/player/player.h" +#include "../rf/player/camera.h" + +namespace +{ + // Full clip-box size of a spray decal in world units. + constexpr float kSprayExtent = 2.0f; + + // Max distance from the player to the sprayed surface. + constexpr float kSprayMaxDistance = 3.0f; + + // In single player there is no network player id, this is a stand-in. + constexpr uint8_t kSinglePlayerSprayerId = 0; + + // Spray textures, stretched to 1:1 aspect. + constexpr const char* g_spray_table[] = { + "dec_af_csp01.png", + "rf_red01_A.tga", + "rebel_insignia.tga", + "dec_af_csp04.png", + "mtl_bronze_ultor01_A.tga", + "ultorlogo01_A.tga", + "ultor_blue01_A.tga", + "mtl_dm17ultor01_A.tga", + "dec_af_csp05.png", + "dec_af_csp06.tga", + "dieultor_A.tga", + "mtl_eos_rules01.tga", + "mtl_kill_guards01.tga", + "mtl_plague01.tga", + "dec_af_csp07.png", + "mtl_ultsux01.tga", + "sucks_to_be_you.tga", + "sld_greenX_A.tga", + "GeoPointer01.tga", + "GeoPointer02.tga", + "dec_af_csp09.tga", + "mtl_apc01_dirty.tga", + "mtl_horseplay.tga", + "mtl_highvoltage.tga", + "mtl_donotuseelv.tga", + "mtl_electric_fence01.tga", + "mtl_emergency_room01.tga", + "mtl_cavein01.tga", + "mtl_biohazard02.tga", + "mtl_shower_limit.tga", + "mtl_no_miners01.tga", + "mtl_no_admit.tga", + "mtl_obey_rules01.tga", + "mtl_no_horsing02.tga", + "mtl_heavy_equipment01.tga", + "mtl_ultor_prop002.tga", + "mtl_high01_dirty.tga", + "blastedcem01_A.tga", + "BlastHole.tga", + "leaf.tga", + "AcidBlob.tga", + "AcidBlob02.tga", + "brownsplat01_A.tga", + "darkbluesplat01_A.tga", + "dec_af_csp08.png", + "dec_af_csp10.tga", + "dec_af_csp02.png", + "sld_merc_decal01.tga", + "dec_af_csp03.png", + "circle.tga", + "klown_a.tga", + "mtl_cargo_logo01.tga", + }; + constexpr size_t kSprayCount = std::size(g_spray_table); + + // Lazily-loaded, cached bitmap handles (nullopt = not yet attempted, -1 = load failed). + std::array, kSprayCount> g_spray_bitmaps; + + struct ClientSprayState + { + uint16_t texture_id = 0; + rf::Vector3 pos{}; + rf::Vector3 normal{}; + rf::GDecal* decal = nullptr; // may be null (display off or creation failed) + }; + + struct ServerSprayState + { + uint16_t texture_id = 0; + rf::Vector3 pos{}; + rf::Vector3 normal{}; + }; + + std::unordered_map g_client_sprays; + std::unordered_map g_server_sprays; + + int get_cached_spray_bitmap(uint16_t id) + { + if (id >= kSprayCount) { + return -1; + } + if (!g_spray_bitmaps[id].has_value()) { + int bm = rf::bm::load(g_spray_table[id], -1, true); + if (bm >= 0) { + rf::bm::texture_add_ref(bm); + } + else { + xlog::warn("sprays: failed to load spray texture '{}'", g_spray_table[id]); + } + g_spray_bitmaps[id] = bm; + } + return *g_spray_bitmaps[id]; + } + + bool is_finite_vec(const rf::Vector3& v) + { + return std::isfinite(v.x) && std::isfinite(v.y) && std::isfinite(v.z); + } + + // Build an explicit, upright orientation for the decal. + // We cannot use Matrix3::make_quick here because it derives rvec/uvec from the matrix's own + // zero-initialized fvec rather than from the passed vector, yielding a fixed/degenerate basis. + rf::Matrix3 build_spray_orient(const rf::Vector3& normal) + { + rf::Vector3 f = normal; + f.normalize_safe(); + const rf::Vector3 ref = (std::fabs(f.y) < 0.98f) ? rf::Vector3{0.0f, 1.0f, 0.0f} + : rf::Vector3{1.0f, 0.0f, 0.0f}; + rf::Vector3 r = ref.cross(f); + r.normalize_safe(); + rf::Vector3 u = f.cross(r); // unit length (f, r orthonormal) + + rf::Matrix3 m; + m.rvec = r; + m.uvec = u; + m.fvec = f; + return m; + } + + bool spray_level_active() + { + return (rf::level.flags & rf::LEVEL_LOADED) != 0 && rf::g_level_solid != nullptr; + } + + void spray_destroy_decal(rf::GDecal* decal) + { + if (decal && spray_level_active()) { + rf::g_decal_destroy(decal); + } + } + + rf::GDecal* create_spray_decal(uint16_t texture_id, const rf::Vector3& pos, const rf::Vector3& normal, bool play_sound) + { + if (rf::is_dedicated_server || !spray_level_active()) { + return nullptr; + } + int bm = get_cached_spray_bitmap(texture_id); + if (bm < 0) { + return nullptr; + } + + rf::Vector3 n = normal; + n.normalize_safe(); + + rf::GDecalCreateInfo dci{}; + dci.pos = pos; + dci.orient = build_spray_orient(n); + dci.extents = {kSprayExtent, kSprayExtent, kSprayExtent}; + dci.texture = bm; + dci.room = rf::find_room(rf::g_level_solid, &pos); + dci.alpha = 255; + dci.flags = 0; + dci.object_handle = -1; + dci.solid = rf::g_level_solid; + dci.scale = 1.0f; + + rf::GDecal* decal = rf::g_decal_add(&dci); + + if (decal && play_sound) { + int sound_id = get_spray_sound_id(); + if (sound_id >= 0) { + play_local_sound_3d(static_cast(sound_id), pos, 0, 1.0f); + } + } + return decal; + } + + // Clean up spray decals. + FunHook g_decal_destroy_hook{ + 0x004D6C50, + [](rf::GDecal* decal) { + g_decal_destroy_hook.call_target(decal); + for (auto& [player_id, state] : g_client_sprays) { + if (state.decal == decal) { + state.decal = nullptr; + } + } + }, + }; + + // Newest decal renders on top. Stock function inserts a new decal poly at the HEAD of + // its face's poly list and the renderer draws that list head-first, so overlapping decals show + // the OLDEST on top. Append at the TAIL instead so the most recently created decal draws last + // (on top). + void __fastcall decal_face_poly_insert_newest_on_top(rf::GFace* face, int, rf::DecalPoly* poly) + { + poly->next_for_face = nullptr; + if (face->decal_list == nullptr) { + face->decal_list = poly; + } + else { + rf::DecalPoly* node = face->decal_list; + while (node->next_for_face != nullptr) { + node = node->next_for_face; + } + node->next_for_face = poly; + } + } + + FunHook decal_face_poly_insert_hook{ + 0x004E36D0, + decal_face_poly_insert_newest_on_top, + }; + + // Ensure sprays don't survive a level change in SP or MP. + CodeInjection level_set_to_load_clear_sprays_patch{ + 0x0045E2E0, + []() { + sprays_level_init(); + }, + }; + + ConsoleCommand2 cl_sprays_cmd{ + "cl_sprays", + []() { + g_alpine_game_config.spray_display = !g_alpine_game_config.spray_display; + sprays_apply_display_toggle(); + rf::console::print("Local spray display is {}", g_alpine_game_config.spray_display ? "enabled" : "disabled"); + }, + "Toggle whether players' sprays are displayed locally", + "cl_sprays", + }; + + ConsoleCommand2 spray_cmd{ + "spray", + [](std::optional spray_id) { + if (spray_id) { + if (*spray_id < 0 || !is_valid_spray_id(static_cast(*spray_id))) { + rf::console::print("Invalid spray id {}. Valid range is 0-{}.", *spray_id, spray_count() - 1); + return; + } + g_alpine_game_config.set_selected_spray_index(*spray_id); + } + rf::console::print("Selected spray: {} ({})", g_alpine_game_config.selected_spray_index, + spray_texture_name(static_cast(g_alpine_game_config.selected_spray_index))); + if (!spray_id) { + rf::console::print("Available sprays:"); + for (int i = 0; i < spray_count(); ++i) { + rf::console::print(" {} - {}", i, spray_texture_name(static_cast(i))); + } + } + }, + "Select the spray to use, or list all available sprays", + "spray [id]", + }; +} + +int spray_count() +{ + return static_cast(kSprayCount); +} + +bool is_valid_spray_id(uint16_t spray_id) +{ + return spray_id < kSprayCount; +} + +const char* spray_texture_name(uint16_t spray_id) +{ + return is_valid_spray_id(spray_id) ? g_spray_table[spray_id] : nullptr; +} + +int spray_get_bitmap(uint16_t id) +{ + return get_cached_spray_bitmap(id); +} + +void sprays_do_patch() +{ + g_decal_destroy_hook.install(); + decal_face_poly_insert_hook.install(); + level_set_to_load_clear_sprays_patch.install(); + cl_sprays_cmd.register_cmd(); + spray_cmd.register_cmd(); +} + +void sprays_level_init() +{ + g_server_sprays.clear(); + g_client_sprays.clear(); +} + +void sprays_on_player_destroyed(rf::Player* player) +{ + if (!player || !player->net_data) { + return; + } + const uint8_t player_id = player->net_data->player_id; + + if (rf::is_server) { + g_server_sprays.erase(player_id); + } + + auto it = g_client_sprays.find(player_id); + if (it != g_client_sprays.end()) { + spray_destroy_decal(it->second.decal); // no-op if the level is being torn down + g_client_sprays.erase(player_id); + } +} + +// Sync sprays for late joiners. +void sprays_force_state_sync_to(rf::Player* player) +{ + if (!rf::is_server || !player || !player->net_data) { + return; + } + if (!is_player_minimum_af_client_version(player, 1, 4, 0)) { + return; + } + for (const auto& [player_id, state] : g_server_sprays) { + af_send_spray_to_player(player_id, state.texture_id, state.pos, state.normal, AF_SPRAY_FLAG_SILENT, player); + } +} + +void sprays_handle_spray_request(rf::Player* player, uint16_t texture_id, const rf::Vector3& pos_in, const rf::Vector3& normal_in) +{ + if (!rf::is_server || !player || !player->net_data) { + return; + } + + //xlog::info("sprays: request from '{}' (id={}, pos=({:.2f}, {:.2f}, {:.2f}))", player->name, texture_id, pos_in.x, pos_in.y, pos_in.z); + + if (!server_sprays_enabled()) { + //xlog::info("sprays: rejected '{}': sprays disabled in config", player->name); + return; + } + + if (!is_valid_spray_id(texture_id)) { + //xlog::warn("sprays: rejected '{}': invalid spray id {}", player->name, texture_id); + //af_send_server_console_msg("Spray rejected: invalid spray", player); + return; + } + + if (!is_finite_vec(pos_in) || !is_finite_vec(normal_in)) { + //xlog::warn("sprays: rejected '{}': non-finite pos/normal", player->name); + //af_send_server_console_msg("Spray rejected: invalid data", player); + return; + } + + rf::Vector3 normal = normal_in; + const float nlen = normal.len(); + if (!std::isfinite(nlen) || nlen < 0.0001f) { + //xlog::warn("sprays: rejected '{}': degenerate normal", player->name); + //af_send_server_console_msg("Spray rejected: invalid data", player); + return; + } + normal /= nlen; + + rf::Entity* entity = rf::entity_from_handle(player->entity_handle); + if (!entity) { + //xlog::info("sprays: rejected '{}': no live entity", player->name); + return; // no live entity to spray from + } + + // Use the closer of feet and eye to the hit point. Measuring only from the feet + // (entity->pos) falsely rejects a player standing against a tall wall who aims high on it; + // the eye (entity->eye_pos, maintained every server tick for AI aiming) covers that. Taking + // the min keeps the anti-abuse cap intact while staying robust even if eye_pos were stale. + const float dist = std::min(entity->pos.distance_to(pos_in), entity->eye_pos.distance_to(pos_in)); + if (dist > kSprayMaxDistance + 1.0f) { + //xlog::info("sprays: rejected '{}': too far ({:.2f} > {:.2f})", player->name, dist, kSprayMaxDistance); + af_send_automated_chat_msg("Spray rejected: too far from surface", player); + return; + } + + const int64_t now = timer::get_i64(1000); + if (player->last_spray_ms && (now - *player->last_spray_ms) < server_spray_cooldown_ms()) { + //xlog::info("sprays: rejected '{}': on cooldown ({} ms since last)", player->name, now - *player->last_spray_ms); + af_send_automated_chat_msg("Spray rejected: on cooldown", player); + return; + } + + // Spray accepted. + player->last_spray_ms = now; + const uint8_t player_id = player->net_data->player_id; + g_server_sprays[player_id] = ServerSprayState{texture_id, pos_in, normal}; + //xlog::info("sprays: accepted spray from '{}' (player_id={}), broadcasting", player->name, player_id); + + // Broadcast to every client (including the requester). + // On a listen server also render locally for the host. + af_broadcast_spray(player_id, texture_id, pos_in, normal); + if (!rf::is_dedicated_server) { + sprays_apply_client_state(player_id, texture_id, pos_in, normal, true); + } +} + +void sprays_apply_client_state(uint8_t player_id, uint16_t texture_id, const rf::Vector3& pos, const rf::Vector3& normal, bool play_sound) +{ + if (rf::is_dedicated_server) { + return; // dedicated servers do not render + } + if (!is_valid_spray_id(texture_id)) { + xlog::info("sprays: ignoring spray with unknown id {} for player_id {}", texture_id, player_id); + return; // ignore unknown ids (forward compatibility) + } + + // Replace this player's previous spray everywhere. + auto it = g_client_sprays.find(player_id); + if (it != g_client_sprays.end()) { + spray_destroy_decal(it->second.decal); // hook nulls the pointer; no-op during teardown + } + + ClientSprayState state{}; + state.texture_id = texture_id; + state.pos = pos; + state.normal = normal; + state.decal = g_alpine_game_config.spray_display + ? create_spray_decal(texture_id, pos, normal, play_sound) + : nullptr; + + if (g_alpine_game_config.spray_display && !state.decal) { + xlog::warn("sprays: decal creation failed for player_id {} (id={}, pos=({:.2f}, {:.2f}, {:.2f}))", + player_id, texture_id, pos.x, pos.y, pos.z); + } + else { + //xlog::info("sprays: applied spray for player_id {} (id={}, decal={})", player_id, texture_id, state.decal != nullptr); + } + + g_client_sprays[player_id] = state; +} + +void sprays_apply_display_toggle() +{ + if (rf::is_dedicated_server) { + return; + } + if (g_alpine_game_config.spray_display) { + for (auto& [player_id, state] : g_client_sprays) { + if (!state.decal) { + state.decal = create_spray_decal(state.texture_id, state.pos, state.normal, false); + } + } + } + else { + for (auto& [player_id, state] : g_client_sprays) { + spray_destroy_decal(state.decal); // hook nulls state.decal + state.decal = nullptr; + } + } +} + +// On-screen feedback for user-visible guard failures. +static void spray_chat_feedback(const char* text) +{ + if (!rf::is_multi) { + rf::console::print("{}", text); + return; + } + rf::String msg{text}; + rf::String prefix; + rf::multi_chat_print(msg, rf::ChatMsgColor::white_white, prefix); +} + +void sprays_handle_spray_action() +{ + xlog::info("sprays: spray action fired"); + + // Sprays are usable in single player as well as multiplayer. + const bool single_player = !rf::is_multi; + + // Whether sprays are allowed: a networked client learns this from the server's af_server_info + // (delivered in the join-accept); the listen-server host IS the server, so it consults its own + // config directly (it never receives an af_server_info for itself). Single player has no + // server, so it is always allowed here (still subject to the local toggle / valid selection). + if (!single_player) { + if (rf::is_server) { + if (!server_sprays_enabled()) { + spray_chat_feedback("Sprays are disabled on this server"); + return; + } + } + else { + const auto& server_info = get_af_server_info(); + if (!server_info.has_value() || !server_info->allow_sprays) { + spray_chat_feedback("This server does not allow sprays"); + return; + } + } + } + + if (!g_alpine_game_config.spray_display) { + return; + } + + const uint16_t spray_id = static_cast(g_alpine_game_config.selected_spray_index); + if (!is_valid_spray_id(spray_id)) { + return; + } + + // Local re-request throttle to avoid packet spam; the real cooldown is server-side. + static std::optional last_request_ms; + const int64_t now_ms = timer::get_i64(1000); + if (last_request_ms && now_ms - *last_request_ms < 1000) { + return; + } + + rf::Player* player = rf::local_player; + if (!player || !player->cam || !rf::level.geometry) { + return; + } + + const rf::Vector3 eye = rf::camera_get_pos(player->cam); + const rf::Matrix3 orient = rf::camera_get_orient(player->cam); + + // Trace against the level's static solid geometry for a spray location. + rf::Vector3 p0 = eye; + rf::Vector3 p1 = eye + orient.fvec * 50.0f; // server enforces the real max distance + rf::GCollisionOutput out; + const bool hit = rf::collide_linesegment_level_solid(p0, p1, 0, &out); + if (!hit || out.num_hits == 0) { + xlog::info("sprays: raycast hit no level geometry within 50m"); + rf::console::print("No surface in view to spray"); + return; + } + + last_request_ms = now_ms; + xlog::info("sprays: sending spray request (id={}, hit=({:.2f}, {:.2f}, {:.2f}), normal=({:.2f}, {:.2f}, {:.2f}), dist={:.2f})", + spray_id, out.hit_point.x, out.hit_point.y, out.hit_point.z, + out.normal.x, out.normal.y, out.normal.z, eye.distance_to(out.hit_point)); + + // Single player: no server and no networking, so just place the spray locally for yourself. + // A networked client sends the request to the server; the listen-server host has no separate + // server to receive a packet, so it runs the server-side handler directly in-process. + if (single_player) { + sprays_apply_client_state(kSinglePlayerSprayerId, spray_id, out.hit_point, out.normal, true); + } + else if (rf::is_server) { + sprays_handle_spray_request(rf::local_player, spray_id, out.hit_point, out.normal); + } + else { + af_send_spray_request(spray_id, out.hit_point, out.normal); + } +} diff --git a/game_patch/multi/sprays.h b/game_patch/multi/sprays.h new file mode 100644 index 00000000..36bfb42b --- /dev/null +++ b/game_patch/multi/sprays.h @@ -0,0 +1,22 @@ +#pragma once + +#include + +namespace rf +{ + struct Player; + struct Vector3; +} + +int spray_count(); +bool is_valid_spray_id(uint16_t spray_id); +const char* spray_texture_name(uint16_t spray_id); +int spray_get_bitmap(uint16_t id); +void sprays_do_patch(); +void sprays_level_init(); +void sprays_on_player_destroyed(rf::Player* player); +void sprays_force_state_sync_to(rf::Player* player); +void sprays_handle_spray_action(); +void sprays_handle_spray_request(rf::Player* player, uint16_t texture_id, const rf::Vector3& pos, const rf::Vector3& normal); +void sprays_apply_client_state(uint8_t player_id, uint16_t texture_id, const rf::Vector3& pos, const rf::Vector3& normal, bool play_sound); +void sprays_apply_display_toggle(); diff --git a/game_patch/rf/geometry.h b/game_patch/rf/geometry.h index 93a7ab32..6cb423ca 100644 --- a/game_patch/rf/geometry.h +++ b/game_patch/rf/geometry.h @@ -620,6 +620,7 @@ namespace rf // Geomod effect functions static auto& geomod_push_nearby_entities = addr_as_ref(0x004C0160); static auto& g_decal_add = addr_as_ref(0x004D52E0); + static auto& g_decal_destroy = addr_as_ref(0x004D6C50); static auto& geomod_create_rock_debris = addr_as_ref(0x0048FE30); diff --git a/game_patch/rf/player/control_config.h b/game_patch/rf/player/control_config.h index b0bb3254..d1d841b5 100644 --- a/game_patch/rf/player/control_config.h +++ b/game_patch/rf/player/control_config.h @@ -55,7 +55,8 @@ namespace rf AF_ACTION_INSPECT_WEAPON = 0xE, AF_ACTION_SPECTATE_TOGGLE_FREELOOK = 0xF, AF_ACTION_SPECTATE_TOGGLE = 0x10, - _AF_ACTION_LAST_VARIANT = AF_ACTION_SPECTATE_TOGGLE + AF_ACTION_SPRAY = 0x11, + _AF_ACTION_LAST_VARIANT = AF_ACTION_SPRAY }; struct ControlConfigItem diff --git a/game_patch/rf/player/player.h b/game_patch/rf/player/player.h index 6d8f0f0f..ee202d4a 100644 --- a/game_patch/rf/player/player.h +++ b/game_patch/rf/player/player.h @@ -64,6 +64,7 @@ struct PlayerAdditionalData { std::optional last_hit_sound_ms{}; std::optional last_critical_sound_ms{}; + std::optional last_spray_ms{}; struct { std::map saves{}; diff --git a/game_patch/sound/sound.cpp b/game_patch/sound/sound.cpp index 72ebf8a9..bcbab3d4 100644 --- a/game_patch/sound/sound.cpp +++ b/game_patch/sound/sound.cpp @@ -21,6 +21,7 @@ static int g_cutscene_bg_sound_sig = -1; static int g_custom_sound_entry_start = -1; static int g_taunt_sound_start = -1; static int g_radmsg_sound_start = -1; +static int g_spray_sound_id = -1; #ifdef DEBUG int g_sound_test = 0; #endif @@ -491,6 +492,11 @@ int get_custom_chat_message_sound_id(int custom_id, bool is_taunt) return is_taunt ? g_taunt_sound_start + custom_id : g_radmsg_sound_start + custom_id; } +int get_spray_sound_id() +{ + return g_spray_sound_id; +} + void gamesound_parse_custom_sounds() { // Record first custom sound ID @@ -614,6 +620,7 @@ void gamesound_parse_custom_sounds() {"MP_TAUNT_72.wav", 10.0f, 1.0f, 1.0f}, {"MP_TAUNT_73.wav", 10.0f, 1.0f, 1.0f}, {"MP_TAUNT_74.wav", 10.0f, 1.0f, 1.0f}, + {"af_spray1.wav", 10.0f, 1.0f, 1.0f}, }; for (const auto& sound : custom_sounds) @@ -628,6 +635,7 @@ void gamesound_parse_custom_sounds() g_taunt_sound_start = rf::snd_pc_find_by_name("MP_TAUNT_16.wav"); g_radmsg_sound_start = rf::snd_pc_find_by_name("af_radmsg_000.ogg"); + g_spray_sound_id = rf::snd_pc_find_by_name("af_spray1.wav"); //xlog::warn("Custom sounds added, starting at ID {}. Taunts start at ID {}", g_custom_sound_entry_start, g_taunt_sound_start); } diff --git a/game_patch/sound/sound.h b/game_patch/sound/sound.h index c886ea49..ec6eae2b 100644 --- a/game_patch/sound/sound.h +++ b/game_patch/sound/sound.h @@ -19,6 +19,7 @@ void enable_sound_after_cutscene_skip(); void set_sound_enabled(bool enabled); int get_custom_sound_id(int custom_id); bool is_valid_custom_sound_id(int custom_id); +int get_spray_sound_id(); void play_local_sound_2d(uint16_t sound_id, int group, float volume); void play_local_sound_3d(uint16_t sound_id, rf::Vector3 pos, int group, float volume); void play_chat_sound(std::string_view msg, bool is_taunt); From c8a5cb91412d0e917d7e8a4edb7f682f679fda5a Mon Sep 17 00:00:00 2001 From: Chris Parsons Date: Sun, 12 Jul 2026 00:19:06 -0230 Subject: [PATCH 2/7] add spray images --- resources/CMakeLists.txt | 10 ++++++++++ resources/images/dec_af_csp01.png | Bin 0 -> 57578 bytes resources/images/dec_af_csp02.png | Bin 0 -> 6264 bytes resources/images/dec_af_csp03.png | Bin 0 -> 9136 bytes resources/images/dec_af_csp04.png | Bin 0 -> 14709 bytes resources/images/dec_af_csp05.png | Bin 0 -> 79641 bytes resources/images/dec_af_csp06.tga | Bin 0 -> 84750 bytes resources/images/dec_af_csp07.png | Bin 0 -> 18683 bytes resources/images/dec_af_csp08.png | Bin 0 -> 5679 bytes resources/images/dec_af_csp09.tga | Bin 0 -> 67704 bytes resources/images/dec_af_csp10.tga | Bin 0 -> 13098 bytes 11 files changed, 10 insertions(+) create mode 100644 resources/images/dec_af_csp01.png create mode 100644 resources/images/dec_af_csp02.png create mode 100644 resources/images/dec_af_csp03.png create mode 100644 resources/images/dec_af_csp04.png create mode 100644 resources/images/dec_af_csp05.png create mode 100644 resources/images/dec_af_csp06.tga create mode 100644 resources/images/dec_af_csp07.png create mode 100644 resources/images/dec_af_csp08.png create mode 100644 resources/images/dec_af_csp09.tga create mode 100644 resources/images/dec_af_csp10.tga diff --git a/resources/CMakeLists.txt b/resources/CMakeLists.txt index 552d0614..de271cc8 100644 --- a/resources/CMakeLists.txt +++ b/resources/CMakeLists.txt @@ -250,6 +250,16 @@ add_packfile(alpinefaction.vpp images/af_powerup-bag.vbm images/af_wh_bag_hold.tga images/af_wh_bag_take.tga + images/dec_af_csp01.png + images/dec_af_csp02.png + images/dec_af_csp03.png + images/dec_af_csp04.png + images/dec_af_csp05.png + images/dec_af_csp06.tga + images/dec_af_csp07.png + images/dec_af_csp08.png + images/dec_af_csp09.tga + images/dec_af_csp10.tga fonts/biggerfont.vf fonts/regularfont.ttf diff --git a/resources/images/dec_af_csp01.png b/resources/images/dec_af_csp01.png new file mode 100644 index 0000000000000000000000000000000000000000..5cd22adecfede835b361c14130a33c9644bfd015 GIT binary patch literal 57578 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%0Ac=0*niX)aS34)f%JG2yrsT_SUv@ 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 K&s3Y>2>%18F{-`* literal 0 HcmV?d00001 diff --git a/resources/images/dec_af_csp02.png b/resources/images/dec_af_csp02.png new file mode 100644 index 0000000000000000000000000000000000000000..eaa4f5a222cf8ec532d349e772c8d5602993b7a7 GIT binary patch literal 6264 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 literal 0 HcmV?d00001 diff --git a/resources/images/dec_af_csp03.png b/resources/images/dec_af_csp03.png new file mode 100644 index 0000000000000000000000000000000000000000..8e46b4383a49a9168a8520f4dbe5ebde382f2557 GIT binary patch literal 9136 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 NwAA&~3NBcM{2%nEK7arK literal 0 HcmV?d00001 diff --git a/resources/images/dec_af_csp04.png b/resources/images/dec_af_csp04.png new file mode 100644 index 0000000000000000000000000000000000000000..b17cb94e30a79a25db74b617332fb3bfab8dd18f GIT binary patch literal 14709 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 literal 0 HcmV?d00001 diff --git a/resources/images/dec_af_csp07.png b/resources/images/dec_af_csp07.png new file mode 100644 index 0000000000000000000000000000000000000000..aa3015c30eb42deb760c318db297f33d35c031b1 GIT binary patch literal 18683 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 literal 0 HcmV?d00001 diff --git a/resources/images/dec_af_csp08.png b/resources/images/dec_af_csp08.png new file mode 100644 index 0000000000000000000000000000000000000000..ee45ae6c18816f5bbfbcce21215310a22bae8063 GIT binary patch literal 5679 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 GiTfv-`UZvo literal 0 HcmV?d00001 diff --git a/resources/images/dec_af_csp09.tga b/resources/images/dec_af_csp09.tga new file mode 100644 index 0000000000000000000000000000000000000000..f212488da650d26ce9dac801e12fa21a0e79c8db GIT binary patch literal 67704 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 literal 0 HcmV?d00001 diff --git a/resources/images/dec_af_csp10.tga b/resources/images/dec_af_csp10.tga new file mode 100644 index 0000000000000000000000000000000000000000..2c9fa123ae5cb1ef18e5e283925bb6b9c4fff00a GIT binary patch literal 13098 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 Date: Sun, 12 Jul 2026 00:48:01 -0230 Subject: [PATCH 3/7] add spray sound --- game_patch/multi/sprays.cpp | 4 ++-- game_patch/sound/sound.cpp | 4 ++-- resources/CMakeLists.txt | 1 + resources/licensing-info.txt | 3 +++ resources/sounds/af_spray1.ogg | Bin 0 -> 7815 bytes 5 files changed, 8 insertions(+), 4 deletions(-) create mode 100644 resources/sounds/af_spray1.ogg diff --git a/game_patch/multi/sprays.cpp b/game_patch/multi/sprays.cpp index 2fa6cf77..13b7bba7 100644 --- a/game_patch/multi/sprays.cpp +++ b/game_patch/multi/sprays.cpp @@ -62,6 +62,8 @@ namespace "GeoPointer02.tga", "dec_af_csp09.tga", "mtl_apc01_dirty.tga", + "mtl_ultor_prop002.tga", + "mtl_high01_dirty.tga", "mtl_horseplay.tga", "mtl_highvoltage.tga", "mtl_donotuseelv.tga", @@ -75,8 +77,6 @@ namespace "mtl_obey_rules01.tga", "mtl_no_horsing02.tga", "mtl_heavy_equipment01.tga", - "mtl_ultor_prop002.tga", - "mtl_high01_dirty.tga", "blastedcem01_A.tga", "BlastHole.tga", "leaf.tga", diff --git a/game_patch/sound/sound.cpp b/game_patch/sound/sound.cpp index bcbab3d4..465f2022 100644 --- a/game_patch/sound/sound.cpp +++ b/game_patch/sound/sound.cpp @@ -620,7 +620,7 @@ void gamesound_parse_custom_sounds() {"MP_TAUNT_72.wav", 10.0f, 1.0f, 1.0f}, {"MP_TAUNT_73.wav", 10.0f, 1.0f, 1.0f}, {"MP_TAUNT_74.wav", 10.0f, 1.0f, 1.0f}, - {"af_spray1.wav", 10.0f, 1.0f, 1.0f}, + {"af_spray1.ogg", 10.0f, 1.0f, 1.0f}, }; for (const auto& sound : custom_sounds) @@ -635,7 +635,7 @@ void gamesound_parse_custom_sounds() g_taunt_sound_start = rf::snd_pc_find_by_name("MP_TAUNT_16.wav"); g_radmsg_sound_start = rf::snd_pc_find_by_name("af_radmsg_000.ogg"); - g_spray_sound_id = rf::snd_pc_find_by_name("af_spray1.wav"); + g_spray_sound_id = rf::snd_pc_find_by_name("af_spray1.ogg"); //xlog::warn("Custom sounds added, starting at ID {}. Taunts start at ID {}", g_custom_sound_entry_start, g_taunt_sound_start); } diff --git a/resources/CMakeLists.txt b/resources/CMakeLists.txt index de271cc8..df6b50e4 100644 --- a/resources/CMakeLists.txt +++ b/resources/CMakeLists.txt @@ -89,6 +89,7 @@ add_packfile(alpinefaction.vpp sounds/af_achievement1.wav sounds/af_pinglocation1.wav sounds/af_hitsound1.wav + sounds/af_spray1.ogg sounds/af_killsound1.wav sounds/af_radmsg_000.ogg sounds/af_radmsg_001.ogg diff --git a/resources/licensing-info.txt b/resources/licensing-info.txt index ca164937..4adadbf7 100644 --- a/resources/licensing-info.txt +++ b/resources/licensing-info.txt @@ -89,6 +89,9 @@ Rob_Marion: soneproject: * af_killsound1.wav (CC-BY 3.0: https://freesound.org/s/346425/) +theplax: +* af_spray1.ogg (CC-BY 4.0: https://freesound.org/s/657793/) + ############################################################################### ## stb_image, stb_vorbis diff --git a/resources/sounds/af_spray1.ogg b/resources/sounds/af_spray1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..f6475f31e0b86d25d62e4f644179efc42b07b84c GIT binary patch literal 7815 zcmaiX2Ut_h(*KDdHPS&)(9nb+D4|I}kX}NQK3D2@oJi7ePct zdanTi!9o{N5fSVE1m5@F_kX|dx!-yA?6YTQcV=hiH*;o9+}+K9L%?6pImd&+KyCFO z$O%Zu6|9qIAax3YYyE4c=+FaW>?0GCDJEa`6ga3a1){CXB%k2>mE-w<4s;fVEN05p)A zo?r|Yn%X(V3C8k*-EDqsk6>9ImPw+#Fp^282Nq>0vqnfaR$41BNmg1HZy3>FmTDM7 z86qYvoU7aD?85?wkSlqAb&UIZz`(O;(DAvjX)sXP$H7apupp}gwO{}aR1?rm<aXP=92GJ7ENRLqKPszjW^RN5pJ02-5LZe_FeN11IxEJuIo!HA#&$Z!emBOEH}}jYUeFq7sd22lWuOWr(1-$> zf@+cf{zUBK1yn>Z-z~!n#~_>HxNjC5$dsg~9Km&- zV>$Gs87pwF^+?Wg`6DiH6pzmpYkXvW!0#_ukR0-co*`d@JK|sFdOu>c2SOq`0s8X$_FSWq$No7iPsOv^h;8^s*WM0jhYTNO(+6Hv7|hR;yaDY1%cH_J#S*; zl+9@(9*u$%4ZXiReOvz*Dc+$g8Eshp7+xBV!0@HmgFnS%Yeyz4l|buz?trpeXz zVYqeEUjcIvHVc&Ce?$&7M1+vZZ}rk>{~bAn;>m9mlZExuM6A zb&^Kg2Rf>Zf(8xJKKf4w0Kn4}sKI_7F-1#FqU9&iQW$fU{~j?QbyCh~Tn;qsJpkYX z0AbL{(QFCW6b(NWD+a`}$l)R+UC|5P=rT50DDsF

Q;kN^=^r1G>G47U$M7jJhLw zE*W;@d8wWLk|G0`_Gkf90Kg%75HEPKL;AgiT0;oNe0&d5jF>*A50}c|m4%CzayY-u zD;d-8CE$4t67mTg&hcb$6F?8X%ta$9+z>S`0C0k$ncy*a^bmYG1>J{O;zy&9WqD>p zNCtuEJ_KEU6dRn#Z#D$)=8qmwU&@ObQ5OdQ*i#7jYKY6ZXaj6wz@op%aJrlUm#6`! z_Ar+#h0};~Pi|07-qak^&xx5d$IS8=VVXpZIE{?Hm}5A#G2EE(3?odV@35Tfj5%hW z2Q%5^I?Hp@G9!3F*2o(CoC2xAl#K98Q@-|Df3Y&++GnMJp)|>x24PGwuGZ!l>kwD# zU5w>axB*BtGn(PXV45&9JHD8V@Yg{YdrQ}uU5qu)O#yOjd8wQ!lffX>amv;4 zVeo>uXO5>=ad}0Kctr)NqRF?SnrvIVT2WllSLa?)UDa3jpt9O$1Ef}$SJX*XR7h6V zRsE=t+-NGVXd(C2)#O%JZZvH%cSvru_*Ya{SJu6!Qd`IyT>%>{(qX0W{?f|z7E()# z-$qNoK$9v`eRW$KEoU2o1x+!*^LYEWmY^QKm#!Ar?#9&lDz}q=^nnb< zz9EON@IL~#)%zU>=eo8}UvN}RCc5Wk5CXG{60<0!YZOBQu9P_v|tbd(UUtyshnYU95oARq@ED*FO2Z6&@AKt}f z<}1~eBisc8S@lwd@5@-q!h@``qtZ|)^1U?lKwdhPRa7!cAKsLPG6YYBLe<8gZF~?@ zd1xPb@KhkHG?b52myNAqV=$Wy^Zu#GjTYWsdP9TarHG#eZ5}bY8CUZi!{?^>dOR8(iiA)tPQF|{96u$h@ zCJBija{^hVp_9NJwmy$aGrT}T4mz=M`DLJw{MQMaDyj?v@DCAq_tB08n00V8fEtd` zwUC-Zs9~!fhaS@RWWx?1B^WgZkYXgPp#~g|8Bk{sZ5%?v;hj@R22mo9frM12g*O}y zY9R&I9s6NRXB6KFVLD>X2xx&(+yw*k4jmtnH)@2Jz~#&)MC1kiLgaD=ZOa?Tq9MWO zJftoTkG_bKfXA?*^hJqarOU(*)^k21cq@MJKnHo`GSmr*h=m22%Sf_{fK_ zfw1bb(L|9ut-PxRiBnEh@)QunjmtUSD3IVi_y_>z4$}iQG{?0S#CRDc zCLv9^g-wT7M*g1n{#9Bp_G#sa;-R^1lm{e~%dd7bQqw zoyBee{;j)sk24%p z5q^wWlBy#c3s~rNWPvB96Nrw5uM(m`_Y`TOkm8~sO5ku1K43)SZBW^PXtabVF@u^q zCTvhrAa8n6;uP8ol%m8yY?z>mnpW3?6Q^tvrNEFwfuBxE^08=eN$0dv6@oB^2IG_0 zxe5#*8*lLF-csF7XADIoL)^p>^(yL^U=k9Ukif8w#L4- zsTTt@=!-%sS_HLFAgZVs5sU`ia4;90@~=5IrIiC{fq+^$Scku;u@5bVB5)2a0D??> ze26J|Q2u*UxD#di0rxzmuyyejkb zu>D*xEE+~D7}p8mO2I{O`dxc-#H9Hdqmnj}W&b9;2mmJlAngcDNGJ!H%yO4Cg)Nmm zjU$~C55gA!Y9KgP04H)dE-ub3xuoMQjfj>@G~vZNTG4$nwPRp7xT?_ZkN0oNw9ixy z$kdxMRgBNa00rJtqB63wGBUCsclSQ7e)#czZTa=^=x8_Oi%8KuUA~u|eRlOIX}W<7 zyc+v2jQ<|)*EDlCAO%uNbFxk-7;l{%xuDYu&IgXpo-VCIM;(j$a3)^PdKQWJYoHY0qwV@xUp=x2k99x+=HIjF!r_b^zO5g z!-LA$0B7j%cC4A8=;$8`3#}%5gOL1O?rE`kU`OXFx!;@-PSV1ET)lAZCTg$o_sy~0 zK)cWo0j7@|afgcKXUv@Lv>Dp8(IiGmgW~6oa;|ml<7ca^Y4rKW{Z_-x{}(CCq`=*4sX{c4a@)Wdvn$9 z>rLWIlTqMB{Q~ZCHi758o@kR*U0POI*dAr*R93SW0dQy*pk-LajV}&#b`8aHA09Dq zrc5XfhQte>4|x4uu=dioA6pl0%b2WPCd)mRvtx~g;%Rp{#A0oc0nnm{mPd?~tQXl)`2{@Jr`nNajVPjX z{@1Jid<<0#r=-sDl$T}Px}T=(mYgokWRUxq(hnGxoMv28 zZVqi#+F7{yb@}I4w^qtR+q4U>V1OFytW5Qb;*L{oo&J6IWmb}9pc|aid)J|cYnl0v zZ=}VwzHUhy;&1T$c{SJ)XhOXc!jm-w3Q31t5kkhyorj=5y#v^WmAtnpsn>e+>xiz9T$+gHafPh?o=ueJ;I&dIi3$PBk{q9HJ4na;HhuC{BR+N*fU z1K;tl;>c#o*w&v6RH$r`;7TRP-{6=j*z)#IFuo`|+Es0v|88p2N2W<6ORU|2Lv6O5 z4(2W9DH-qoP4$(wTV5J#8=s*|a{FN}(bP`O;bL;$2d(mT8eQeMUq^K1gs;B!rjs@3 ziMo|Xp-+NNW@e~4-$dg2P26;!^RG1g%6X%vaJlcBzRoYU{u0xaVCe+?*(uQ;`Zwwu zhYGsqX_*hvOV`AX)A8Bat-=KDN=z&+kLe*bzo~psx$cy0bLD(n(C*WsttCju`X@It zhd`6A$Cv=CvsHB4H9=gBub5vtD#4@pW8S>m#wHP&pu;hnw7o{Brz6X>I%3Y{{0N%A zF&oBna%%#RwHS4po4BCTex|Ilp2p{dMHr{5b7mKKu+^%sOl-{6J4LXQz1 z2+6ZkS&3C)aQylEygIrC=3h_pFmGZXL~54H7fku57SVsMzMmUR_uJO&PJ~y_14j|N zj3s*`inWjb^*!6`Vh_f381QRtZz|~%$NcF8em|TqXNoxNVYQewu|WaSkC{E#G)nqR zGv-?TYHQ^_MeE6&Wi~5ef%2;|d%o;!bV_#Cx#!{$zQUSvl_Jx>#acMrgzr~A(qf~t zDYN@|@11%=#;w5MxxyX}@^qKZ;O8QbYZWHya+K}3uG_rTM;p9pu?A1*HzrSJ-fvAL z$|$tUq>b#>&JAIVH|c5$A2JrW$44!@R$X^%pQoP=2)}zGbnQe@rA?e;EW}sDxXsT0LjBa+ z8jl~nq$Z{ry5E`e7q!*sp*Vv|r>xgF?!t}j;N}d#UT9MPQV!l{w*7|A=XK3`)hEr0 zNUWrznL*#O;)%&8(}s!Cdydz#Bgz|$Y974ZGA?wQ6@Oa>bzvQK!$12Pkdj~SepZ5> zat+(|?fHx^6P<%;VmgV>b}Igitz}#J_533eDhkGtuZ#<41~;*c1`dwxrLQj1mBv6N zT=OAl);m$9oYyqYd@M53EBeud^xRZUAfsm(u2h*B4?fbnKU;mIf+Ji9idT#H>0&V9 zd4zv{lRq;ju$23(xnz^cKov3)JL@%|6>XeXB*$4-R?AO{FlZrhD0-Y*{y22K~it$&fD%ENOE^T zqrPP7;OWnOHU%!3L`W+}MKoyVOyX~1x18dbT?`W1{vm7+U6-u3&ha+R^QxWf<`;D+ zl6)xpiCOOwrP6zF)uK4k9iJGzx?J$s=nB zSEhZn607h)kd2NI%Otk|tj*wmN=;gf>prX7bsYe1X3i@fkMJxUKgN7M1vkcXENL?2 z`ob0mC0mlEMLBBqv%d@1g_qau=f8_BG$wT1C0EYOUNjIZb-u-)b3#j6z4guLllr5^ zArB*)Ys||1%e{Rs`{)UutYbg5;NXrX(?$w>Al=my=^VT;DgvW?p7rUUQo-ej@8(;c zTYiq03p4+@VY@PlsOQOIZQUl5j@27dB>(Wb^e=^y-6v0Nub!AeotUJ(KItC90sr}v z=~Aks!KEkTR+On`V@9Ed9-2dnOhuM98txo09a@4XpRf=lBX&n$SxeQ*eQhVUeW-K( zgEXvsYt!rI?fGlR+4!Ft;+S9Gmb#P$B>8gsg+JPv7AD%V5PeX&VM@L~IyXX2W|AMA zzmQSiWcQ{p7N$SW$uz!u>nMJa6fyY8R2-_}?cg9Wo3Y^jEGqP^{m;AN&&~8!lcgVa z$}kh0kBtw-=)E-(nInIJV2(b)SNo3V8!FIIZj|ha8Dw~z>k-yW@Um!`>8;lI9!6N~ zD)ewj`I7&^kR)x-KIS>&WIikZ^TX|qP`yx`>5!kO%d1p}+AVkO41Yx@jesXdPxgQG zLD()tJinsphY^0dWxb3KXYbk_k(b*L%f7YYy24 zAfO)}zrM@!Zu)8nk3}7%#`#vngHEyArr2oCTlCQ(9Y(A_>MpI`i2Kv3-_k6&SjK4l zo*}`ib`W+!oaa=P$~}Zz=F6UA98p^XH(_%Lt?`dzW3eBZT_VDgzrq(1`K!lWVn6!L zz!F_(3Qe3(&*~smE-Ur;S(1U>n!@YM*>iO_xStJ5jaFFBGd?|2aqZ}wgdoE&2SX{E z6ZG@tht=dp9x=~7hKr2oGCdVB8V^I8O3MmdRR5I`PZ^UHZvA?`LE3xIXXac;D3~MR zT{evQl3(dPX)@k7gg?32>z$QTy{j3Rz3@lDqF;Y~bGF4=?b5@R()F`y-uE5dbn+0F zDHh3rnO`b7YiF*WZ3x?u(xSU}_Y^tN_I+#&LG!~rP`$2=vvQua&(sX_{IjmldNp(4 z0=?y!k>tDjV|4_F+cEUt*VctU%||ZWa(#1ZuQ^h?BPmrkl=)f6QrNHBa<3PpMaS=$ zaGF;cb9xM)6nS}p2U_Wg#+nermfFhd&jSNoJA8v4u5;Kstw_rJk$tMk$j6-cw3h#fPXuL9No#G%D zjpRyOeYx?y0`iE#B|d_-ZN=TZvB1OR=u=m0nc?Q`uezZR&qo-YO%nH6dhefEbHc2q zLS@>pi&52Wj+a&ayntcSV(_@y*K3fZw^{Fgq4Wf0$+uX?x0#(*&7x?ULIp0YEh|fH z{hEUHw#pW}s!0ZyC-WvbCuQ^RupizIqPxSBnOs$gGw8`T&hTkVSM^7~u#R-+`<$Fa znGx{{X=v#k>d+uQn?^KJx|RboL>MnX&MBAAiTR%tvP%rVLEo8O@rC~B(TiWbZLIGs z9}+*~Ry!dl6yd~Arcz{2(WIPo$22~utYG+HeDM=7k2_5} z-)CJ~Qal^+(tngTk@=5+M5>tUy2HzNrEhMteQ-G`X8nzqg_8RXVF=l1kuNlK{b5=P LC}wQPaIyS9CDNvx literal 0 HcmV?d00001 From 7e540537946b78ef21c6622454d0d011936941b8 Mon Sep 17 00:00:00 2001 From: Chris Parsons Date: Sun, 12 Jul 2026 00:58:33 -0230 Subject: [PATCH 4/7] fix --- game_patch/multi/sprays.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/game_patch/multi/sprays.cpp b/game_patch/multi/sprays.cpp index 13b7bba7..dc991c22 100644 --- a/game_patch/multi/sprays.cpp +++ b/game_patch/multi/sprays.cpp @@ -432,7 +432,7 @@ void sprays_apply_client_state(uint8_t player_id, uint16_t texture_id, const rf: return; // dedicated servers do not render } if (!is_valid_spray_id(texture_id)) { - xlog::info("sprays: ignoring spray with unknown id {} for player_id {}", texture_id, player_id); + xlog::debug("sprays: ignoring spray with unknown id {} for player_id {}", texture_id, player_id); return; // ignore unknown ids (forward compatibility) } @@ -495,7 +495,7 @@ static void spray_chat_feedback(const char* text) void sprays_handle_spray_action() { - xlog::info("sprays: spray action fired"); + xlog::debug("sprays: spray action fired"); // Sprays are usable in single player as well as multiplayer. const bool single_player = !rf::is_multi; @@ -550,13 +550,13 @@ void sprays_handle_spray_action() rf::GCollisionOutput out; const bool hit = rf::collide_linesegment_level_solid(p0, p1, 0, &out); if (!hit || out.num_hits == 0) { - xlog::info("sprays: raycast hit no level geometry within 50m"); + xlog::debug("sprays: raycast hit no level geometry within 50m"); rf::console::print("No surface in view to spray"); return; } last_request_ms = now_ms; - xlog::info("sprays: sending spray request (id={}, hit=({:.2f}, {:.2f}, {:.2f}), normal=({:.2f}, {:.2f}, {:.2f}), dist={:.2f})", + xlog::debug("sprays: sending spray request (id={}, hit=({:.2f}, {:.2f}, {:.2f}), normal=({:.2f}, {:.2f}, {:.2f}), dist={:.2f})", spray_id, out.hit_point.x, out.hit_point.y, out.hit_point.z, out.normal.x, out.normal.y, out.normal.z, eye.distance_to(out.hit_point)); From 599552750d8fce6218b18001bc4a2dc517b26c63 Mon Sep 17 00:00:00 2001 From: Chris Parsons Date: Sun, 12 Jul 2026 01:09:34 -0230 Subject: [PATCH 5/7] fix --- game_patch/input/key.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/game_patch/input/key.cpp b/game_patch/input/key.cpp index 0e9fbc7d..f501ff0e 100644 --- a/game_patch/input/key.cpp +++ b/game_patch/input/key.cpp @@ -332,7 +332,8 @@ CodeInjection player_execute_action_patch{ 0x004A6283, [](auto& regs) { int action_index = static_cast(regs.ebp); - if (starting_alpine_control_index != -1 && action_index >= starting_alpine_control_index) { + if (starting_alpine_control_index != -1 && + action_index >= starting_alpine_control_index) { execute_alive_alpine_control(action_index); regs.eip = 0x004A681B; } @@ -346,7 +347,9 @@ CodeInjection player_execute_action_high_index_patch{ 0x004A6272, [](auto& regs) { int action_index = static_cast(regs.ebp); - if (action_index > 0x3c && action_index >= starting_alpine_control_index) { + if (starting_alpine_control_index != -1 && + action_index > 0x3c && + action_index >= starting_alpine_control_index) { execute_alive_alpine_control(action_index); regs.eip = 0x004A681B; } From 9cfdd3c8f183fd8bb8eb2d3310b784f45288ca40 Mon Sep 17 00:00:00 2001 From: Chris Parsons Date: Sun, 12 Jul 2026 01:23:20 -0230 Subject: [PATCH 6/7] fix --- game_patch/multi/sprays.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/game_patch/multi/sprays.cpp b/game_patch/multi/sprays.cpp index dc991c22..5b1a69eb 100644 --- a/game_patch/multi/sprays.cpp +++ b/game_patch/multi/sprays.cpp @@ -267,7 +267,7 @@ namespace "spray", [](std::optional spray_id) { if (spray_id) { - if (*spray_id < 0 || !is_valid_spray_id(static_cast(*spray_id))) { + if (*spray_id < 0 || *spray_id >= spray_count()) { rf::console::print("Invalid spray id {}. Valid range is 0-{}.", *spray_id, spray_count() - 1); return; } @@ -520,10 +520,6 @@ void sprays_handle_spray_action() } } - if (!g_alpine_game_config.spray_display) { - return; - } - const uint16_t spray_id = static_cast(g_alpine_game_config.selected_spray_index); if (!is_valid_spray_id(spray_id)) { return; From 75ffedc0385f26d2fffe389cdc2626a70ab75c38 Mon Sep 17 00:00:00 2001 From: Chris Parsons Date: Sun, 12 Jul 2026 01:29:51 -0230 Subject: [PATCH 7/7] fix --- game_patch/multi/sprays.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/game_patch/multi/sprays.cpp b/game_patch/multi/sprays.cpp index 5b1a69eb..a9effd9e 100644 --- a/game_patch/multi/sprays.cpp +++ b/game_patch/multi/sprays.cpp @@ -433,7 +433,13 @@ void sprays_apply_client_state(uint8_t player_id, uint16_t texture_id, const rf: } if (!is_valid_spray_id(texture_id)) { xlog::debug("sprays: ignoring spray with unknown id {} for player_id {}", texture_id, player_id); - return; // ignore unknown ids (forward compatibility) + // The player switched to a spray we can't render. Remove their existing spray. + auto it = g_client_sprays.find(player_id); + if (it != g_client_sprays.end()) { + spray_destroy_decal(it->second.decal); // hook nulls the pointer; no-op during teardown + g_client_sprays.erase(it); + } + return; } // Replace this player's previous spray everywhere.