diff --git a/BigBaseV2/src/backend/looped/self/godmode.cpp b/BigBaseV2/src/backend/looped/self/godmode.cpp index 41311e2f..2a31a585 100644 --- a/BigBaseV2/src/backend/looped/self/godmode.cpp +++ b/BigBaseV2/src/backend/looped/self/godmode.cpp @@ -3,17 +3,19 @@ namespace big { - static bool bLastGodMode = false; + static uint32_t lastProofBits = 0; - void looped::self_godmode() - { - bool bGodMode = g->self.godmode; + void looped::self_godmode() { + if (g_local_player != nullptr) { + uint32_t proofBits = g->self.proof_mask; + uint32_t changedProofBits = proofBits ^ lastProofBits; + uint32_t changedOrEnabledProofBits = proofBits | changedProofBits; - if (bGodMode || (!bGodMode && bGodMode != bLastGodMode)) - { - ENTITY::SET_ENTITY_INVINCIBLE(self::ped, g->self.godmode); - - bLastGodMode = g->self.godmode; + if (changedOrEnabledProofBits) { + uint32_t unchangedBits = g_local_player->m_damage_bits & ~changedOrEnabledProofBits; + g_local_player->m_damage_bits = unchangedBits | proofBits; + lastProofBits = proofBits; + } } } } \ No newline at end of file diff --git a/BigBaseV2/src/core/enums.hpp b/BigBaseV2/src/core/enums.hpp index e0559cd8..030d20c1 100644 --- a/BigBaseV2/src/core/enums.hpp +++ b/BigBaseV2/src/core/enums.hpp @@ -1,196 +1,209 @@ -#pragma once - -namespace big -{ - enum class CustomWeapon - { - NONE, - CAGE_GUN, - DELETE_GUN, - GRAVITY_GUN, - STEAL_VEHICLE_GUN, - REPAIR_GUN, - VEHICLE_GUN - }; - - enum class ContextEntityType : uint8_t - { - NONE = 0, - PED = 1 << 0, - PLAYER = 1 << 1, - VEHICLE = 1 << 2, - OBJECT = 1 << 3, - SHARED = 1 << 4 - }; - - enum class eEntityType - { - UNK_0, - UNK_1, - UNK_2, - UNK_3, - UNK_4, - VEHICLE, - PED, - }; - - enum class eTransitionState - { - TRANSITION_STATE_EMPTY, - TRANSITION_STATE_SP_SWOOP_UP, - TRANSITION_STATE_MP_SWOOP_UP, - TRANSITION_STATE_CREATOR_SWOOP_UP, - TRANSITION_STATE_PRE_HUD_CHECKS, - TRANSITION_STATE_WAIT_HUD_EXIT, - TRANSITION_STATE_WAIT_FOR_SUMMON, - TRANSITION_STATE_SP_SWOOP_DOWN, - TRANSITION_STATE_MP_SWOOP_DOWN, - TRANSITION_STATE_CANCEL_JOINING, - TRANSITION_STATE_RETRY_LOADING, - TRANSITION_STATE_RETRY_LOADING_SLOT_1, - TRANSITION_STATE_RETRY_LOADING_SLOT_2, - TRANSITION_STATE_RETRY_LOADING_SLOT_3, - TRANSITION_STATE_RETRY_LOADING_SLOT_4, - TRANSITION_STATE_WAIT_ON_INVITE, - TRANSITION_STATE_PREJOINING_FM_SESSION_CHECKS, - TRANSITION_STATE_LOOK_FOR_FRESH_JOIN_FM, - TRANSITION_STATE_LOOK_TO_JOIN_ANOTHER_SESSION_FM, - TRANSITION_STATE_CONFIRM_FM_SESSION_JOINING, - TRANSITION_STATE_WAIT_JOIN_FM_SESSION, - TRANSITION_STATE_CREATION_ENTER_SESSION, - TRANSITION_STATE_PRE_FM_LAUNCH_SCRIPT, - TRANSITION_STATE_FM_TEAMFULL_CHECK, - TRANSITION_STATE_START_FM_LAUNCH_SCRIPT, - TRANSITION_STATE_FM_TRANSITION_CREATE_PLAYER, - TRANSITION_STATE_IS_FM_AND_TRANSITION_READY, - TRANSITION_STATE_FM_SWOOP_DOWN, - TRANSITION_STATE_POST_BINK_VIDEO_WARP, - TRANSITION_STATE_FM_FINAL_SETUP_PLAYER, - TRANSITION_STATE_MOVE_FM_TO_RUNNING_STATE, - TRANSITION_STATE_FM_HOW_TO_TERMINATE, - TRANSITION_STATE_START_CREATOR_PRE_LAUNCH_SCRIPT_CHECK, - TRANSITION_STATE_START_CREATOR_LAUNCH_SCRIPT, - TRANSITION_STATE_CREATOR_TRANSITION_CREATE_PLAYER, - TRANSITION_STATE_IS_CREATOR_AND_TRANSITION_READY, - TRANSITION_STATE_CREATOR_SWOOP_DOWN, - TRANSITION_STATE_CREATOR_FINAL_SETUP_PLAYER, - TRANSITION_STATE_MOVE_CREATOR_TO_RUNNING_STATE, - TRANSITION_STATE_PREJOINING_TESTBED_SESSION_CHECKS, - TRANSITION_STATE_LOOK_FOR_FRESH_JOIN_TESTBED, - TRANSITION_STATE_LOOK_FOR_FRESH_HOST_TESTBED, - TRANSITION_STATE_LOOK_TO_JOIN_ANOTHER_SESSION_TESTBED, - TRANSITION_STATE_LOOK_TO_HOST_SESSION_TESTBED, - TRANSITION_STATE_CONFIRM_TESTBED_SESSION_JOINING, - TRANSITION_STATE_WAIT_JOIN_TESTBED_SESSION, - TRANSITION_STATE_START_TESTBED_LAUNCH_SCRIPT, - TRANSITION_STATE_TESTBED_TRANSITION_CREATE_PLAYER, - TRANSITION_STATE_IS_TESTBED_AND_TRANSITION_READY, - TRANSITION_STATE_TESTBED_SWOOP_DOWN, - TRANSITION_STATE_TESTBED_FINAL_SETUP_PLAYER, - TRANSITION_STATE_MOVE_TESTBED_TO_RUNNING_STATE, - TRANSITION_STATE_TESTBED_HOW_TO_TERMINATE, - TRANSITION_STATE_QUIT_CURRENT_SESSION_PROMPT, - TRANSITION_STATE_WAIT_FOR_TRANSITION_SESSION_TO_SETUP, - TRANSITION_STATE_TERMINATE_SP, - TRANSITION_STATE_WAIT_TERMINATE_SP, - TRANSITION_STATE_KICK_TERMINATE_SESSION, - TRANSITION_STATE_TERMINATE_SESSION, - TRANSITION_STATE_WAIT_TERMINATE_SESSION, - TRANSITION_STATE_TERMINATE_SESSION_AND_HOLD, - TRANSITION_STATE_TERMINATE_SESSION_AND_MOVE_INTO_HOLDING_STATE, - TRANSITION_STATE_TEAM_SWAPPING_CHECKS, - TRANSITION_STATE_RETURN_TO_SINGLEPLAYER, - TRANSITION_STATE_WAIT_FOR_SINGLEPLAYER_TO_START, - TRANSITION_STATE_WAITING_FOR_EXTERNAL_TERMINATION_CALL, - TRANSITION_STATE_TERMINATE_MAINTRANSITION, - TRANSITION_STATE_WAIT_FOR_DIRTY_LOAD_CONFIRM, - TRANSITION_STATE_DLC_INTRO_BINK, - TRANSITION_STATE_MAX = INT_MAX - }; - - enum eVehicleFlags - { - TRIGGER_SPAWN_TOGGLE = 1 << 0, - DESTROYED = 1 << 1, - HAS_INSURANCE = 1 << 2, - UNK0 = 1 << 3, - IMPOUNDED = 1 << 6, - UNK1 = 1 << 10, - SPAWN_AT_MORS_MUTUAL = 1 << 11, - UNK2 = 1 << 16 - }; - - enum class ePedTask - { - TASK_NONE, - TASK_FOOT = 1 << 4, - TASK_UNK = 1 << 5, - TASK_DRIVING = 1 << 6 - }; - - enum class eRemoteEvent - { - Bounty = 1294995624, - CeoBan = -764524031, - CeoKick = 248967238, - CeoMoney = 1890277845, - ClearWantedLevel = -91354030, - Crash = -1386010354, - FakeDeposit = 677240627, - ForceMission = 2020588206, - GtaBanner = 1572255940, - MCTeleport = 962740265, - NetworkBail = 1228916411, - PersonalVehicleDestroyed = 802133775, - RemoteOffradar = -391633760, - RotateCam = 801199324, - SendToCutscene = 1068259786, - SendToIsland = -621279188, - SendToCayo = 1463943751, - SoundSpam = 1132878564, - Spectate = -1113591308, - Teleport = 603406648, - TransactionError = -1704141512, - VehicleKick = 578856274, - Unknown1 = -145306724, - Unknown2 = -581037897, - Unknown3 = 1757755807, - Unknown4 = 436475575, - Unknown5 = 990606644, - Unknown6 = 69874647, - - SEC3 = -2113023004, - SEC6 = 704979198, - SEC7 = -1715193475, - SEC8 = 1258808115, - SEC9 = 2112408256, - SEC10 = 998716537, - SEC11 = 163598572, - SEC12 = -1970125962, - SEC13 = -1056683619, - Spaghettios = -393294520, - ForceMission2 = -1525161016, - SHKick = -786546101 - }; - - enum class eSessionType - { - JOIN_PUBLIC, - NEW_PUBLIC, - CLOSED_CREW, - CREW, - CLOSED_FRIENDS = 6, - FIND_FRIEND = 9, - SOLO, - INVITE_ONLY, - JOIN_CREW, - LEAVE_ONLINE = -1 - }; - - enum class SpeedoMeter - { - DISABLED, - KMH, - MPH - }; -} +#pragma once + +namespace big +{ + enum class CustomWeapon + { + NONE, + CAGE_GUN, + DELETE_GUN, + GRAVITY_GUN, + STEAL_VEHICLE_GUN, + REPAIR_GUN, + VEHICLE_GUN + }; + + enum class ContextEntityType : uint8_t + { + NONE = 0, + PED = 1 << 0, + PLAYER = 1 << 1, + VEHICLE = 1 << 2, + OBJECT = 1 << 3, + SHARED = 1 << 4 + }; + + enum class eEntityType + { + UNK_0, + UNK_1, + UNK_2, + UNK_3, + UNK_4, + VEHICLE, + PED, + }; + + enum class eTransitionState + { + TRANSITION_STATE_EMPTY, + TRANSITION_STATE_SP_SWOOP_UP, + TRANSITION_STATE_MP_SWOOP_UP, + TRANSITION_STATE_CREATOR_SWOOP_UP, + TRANSITION_STATE_PRE_HUD_CHECKS, + TRANSITION_STATE_WAIT_HUD_EXIT, + TRANSITION_STATE_WAIT_FOR_SUMMON, + TRANSITION_STATE_SP_SWOOP_DOWN, + TRANSITION_STATE_MP_SWOOP_DOWN, + TRANSITION_STATE_CANCEL_JOINING, + TRANSITION_STATE_RETRY_LOADING, + TRANSITION_STATE_RETRY_LOADING_SLOT_1, + TRANSITION_STATE_RETRY_LOADING_SLOT_2, + TRANSITION_STATE_RETRY_LOADING_SLOT_3, + TRANSITION_STATE_RETRY_LOADING_SLOT_4, + TRANSITION_STATE_WAIT_ON_INVITE, + TRANSITION_STATE_PREJOINING_FM_SESSION_CHECKS, + TRANSITION_STATE_LOOK_FOR_FRESH_JOIN_FM, + TRANSITION_STATE_LOOK_TO_JOIN_ANOTHER_SESSION_FM, + TRANSITION_STATE_CONFIRM_FM_SESSION_JOINING, + TRANSITION_STATE_WAIT_JOIN_FM_SESSION, + TRANSITION_STATE_CREATION_ENTER_SESSION, + TRANSITION_STATE_PRE_FM_LAUNCH_SCRIPT, + TRANSITION_STATE_FM_TEAMFULL_CHECK, + TRANSITION_STATE_START_FM_LAUNCH_SCRIPT, + TRANSITION_STATE_FM_TRANSITION_CREATE_PLAYER, + TRANSITION_STATE_IS_FM_AND_TRANSITION_READY, + TRANSITION_STATE_FM_SWOOP_DOWN, + TRANSITION_STATE_POST_BINK_VIDEO_WARP, + TRANSITION_STATE_FM_FINAL_SETUP_PLAYER, + TRANSITION_STATE_MOVE_FM_TO_RUNNING_STATE, + TRANSITION_STATE_FM_HOW_TO_TERMINATE, + TRANSITION_STATE_START_CREATOR_PRE_LAUNCH_SCRIPT_CHECK, + TRANSITION_STATE_START_CREATOR_LAUNCH_SCRIPT, + TRANSITION_STATE_CREATOR_TRANSITION_CREATE_PLAYER, + TRANSITION_STATE_IS_CREATOR_AND_TRANSITION_READY, + TRANSITION_STATE_CREATOR_SWOOP_DOWN, + TRANSITION_STATE_CREATOR_FINAL_SETUP_PLAYER, + TRANSITION_STATE_MOVE_CREATOR_TO_RUNNING_STATE, + TRANSITION_STATE_PREJOINING_TESTBED_SESSION_CHECKS, + TRANSITION_STATE_LOOK_FOR_FRESH_JOIN_TESTBED, + TRANSITION_STATE_LOOK_FOR_FRESH_HOST_TESTBED, + TRANSITION_STATE_LOOK_TO_JOIN_ANOTHER_SESSION_TESTBED, + TRANSITION_STATE_LOOK_TO_HOST_SESSION_TESTBED, + TRANSITION_STATE_CONFIRM_TESTBED_SESSION_JOINING, + TRANSITION_STATE_WAIT_JOIN_TESTBED_SESSION, + TRANSITION_STATE_START_TESTBED_LAUNCH_SCRIPT, + TRANSITION_STATE_TESTBED_TRANSITION_CREATE_PLAYER, + TRANSITION_STATE_IS_TESTBED_AND_TRANSITION_READY, + TRANSITION_STATE_TESTBED_SWOOP_DOWN, + TRANSITION_STATE_TESTBED_FINAL_SETUP_PLAYER, + TRANSITION_STATE_MOVE_TESTBED_TO_RUNNING_STATE, + TRANSITION_STATE_TESTBED_HOW_TO_TERMINATE, + TRANSITION_STATE_QUIT_CURRENT_SESSION_PROMPT, + TRANSITION_STATE_WAIT_FOR_TRANSITION_SESSION_TO_SETUP, + TRANSITION_STATE_TERMINATE_SP, + TRANSITION_STATE_WAIT_TERMINATE_SP, + TRANSITION_STATE_KICK_TERMINATE_SESSION, + TRANSITION_STATE_TERMINATE_SESSION, + TRANSITION_STATE_WAIT_TERMINATE_SESSION, + TRANSITION_STATE_TERMINATE_SESSION_AND_HOLD, + TRANSITION_STATE_TERMINATE_SESSION_AND_MOVE_INTO_HOLDING_STATE, + TRANSITION_STATE_TEAM_SWAPPING_CHECKS, + TRANSITION_STATE_RETURN_TO_SINGLEPLAYER, + TRANSITION_STATE_WAIT_FOR_SINGLEPLAYER_TO_START, + TRANSITION_STATE_WAITING_FOR_EXTERNAL_TERMINATION_CALL, + TRANSITION_STATE_TERMINATE_MAINTRANSITION, + TRANSITION_STATE_WAIT_FOR_DIRTY_LOAD_CONFIRM, + TRANSITION_STATE_DLC_INTRO_BINK, + TRANSITION_STATE_MAX = INT_MAX + }; + + enum eVehicleFlags + { + TRIGGER_SPAWN_TOGGLE = 1 << 0, + DESTROYED = 1 << 1, + HAS_INSURANCE = 1 << 2, + UNK0 = 1 << 3, + IMPOUNDED = 1 << 6, + UNK1 = 1 << 10, + SPAWN_AT_MORS_MUTUAL = 1 << 11, + UNK2 = 1 << 16 + }; + + enum class ePedTask + { + TASK_NONE, + TASK_FOOT = 1 << 4, + TASK_UNK = 1 << 5, + TASK_DRIVING = 1 << 6 + }; + + enum class eRemoteEvent + { + Bounty = 1294995624, + CeoBan = -764524031, + CeoKick = 248967238, + CeoMoney = 1890277845, + ClearWantedLevel = -91354030, + Crash = -1386010354, + FakeDeposit = 677240627, + ForceMission = 2020588206, + GtaBanner = 1572255940, + MCTeleport = 962740265, + NetworkBail = 1228916411, + PersonalVehicleDestroyed = 802133775, + RemoteOffradar = -391633760, + RotateCam = 801199324, + SendToCutscene = 1068259786, + SendToIsland = -621279188, + SendToCayo = 1463943751, + SoundSpam = 1132878564, + Spectate = -1113591308, + Teleport = 603406648, + TransactionError = -1704141512, + VehicleKick = 578856274, + Unknown1 = -145306724, + Unknown2 = -581037897, + Unknown3 = 1757755807, + Unknown4 = 436475575, + Unknown5 = 990606644, + Unknown6 = 69874647, + + SEC3 = -2113023004, + SEC6 = 704979198, + SEC7 = -1715193475, + SEC8 = 1258808115, + SEC9 = 2112408256, + SEC10 = 998716537, + SEC11 = 163598572, + SEC12 = -1970125962, + SEC13 = -1056683619, + Spaghettios = -393294520, + ForceMission2 = -1525161016, + SHKick = -786546101 + }; + + enum class eSessionType + { + JOIN_PUBLIC, + NEW_PUBLIC, + CLOSED_CREW, + CREW, + CLOSED_FRIENDS = 6, + FIND_FRIEND = 9, + SOLO, + INVITE_ONLY, + JOIN_CREW, + LEAVE_ONLINE = -1 + }; + + enum class SpeedoMeter + { + DISABLED, + KMH, + MPH + }; + + enum class eEntityProofs : uint32_t + { + BULLET = 1 << 4, + FIRE = 1 << 5, + COLLISION = 1 << 6, + MELEE = 1 << 7, + GOD = 1 << 8, + EXPLOSION = 1 << 11, + STEAM = 1 << 15, + DROWN = 1 << 16, + WATER = 1 << 24, + }; +} \ No newline at end of file diff --git a/BigBaseV2/src/core/globals.hpp b/BigBaseV2/src/core/globals.hpp index 57da88a3..fe60b315 100644 --- a/BigBaseV2/src/core/globals.hpp +++ b/BigBaseV2/src/core/globals.hpp @@ -142,6 +142,16 @@ namespace big bool off_radar = false; bool super_run = false; int wanted_level = 0; + + bool proof_bullet = false; + bool proof_fire = false; + bool proof_collision = false; + bool proof_melee = false; + bool proof_explosion = false; + bool proof_steam = false; + bool proof_drown = false; + bool proof_water = false; + uint32_t proof_mask = 0; }; struct session diff --git a/BigBaseV2/src/views/self/view_self.cpp b/BigBaseV2/src/views/self/view_self.cpp index 800a1f3f..e06dff74 100644 --- a/BigBaseV2/src/views/self/view_self.cpp +++ b/BigBaseV2/src/views/self/view_self.cpp @@ -7,35 +7,32 @@ namespace big void view::self() { components::button("Suicide", [] { ENTITY::SET_ENTITY_HEALTH(self::ped, 0, 0); - }); - + }); + ImGui::SameLine(); components::button("Heal", [] { ENTITY::SET_ENTITY_HEALTH(self::ped, PED::GET_PED_MAX_HEALTH(self::ped), 0); PED::SET_PED_ARMOUR(self::ped, PLAYER::GET_PLAYER_MAX_ARMOUR(self::id)); - }); + }); ImGui::SameLine(); components::button("Skip Cutscene", [] { CUTSCENE::STOP_CUTSCENE_IMMEDIATELY(); - }); + }); static char model[32]; - components::input_text_with_hint("Model Name###player_ped_model", "Player Model Name", model, sizeof(model), ImGuiInputTextFlags_EnterReturnsTrue, [] - { + components::input_text_with_hint("Model Name###player_ped_model", "Player Model Name", model, sizeof(model), ImGuiInputTextFlags_EnterReturnsTrue, [] { g_fiber_pool->queue_job([] { const Hash hash = rage::joaat(model); - for (uint8_t i = 0; !STREAMING::HAS_MODEL_LOADED(hash) && i < 100; i++) - { + for (uint8_t i = 0; !STREAMING::HAS_MODEL_LOADED(hash) && i < 100; i++) { STREAMING::REQUEST_MODEL(hash); script::get_current()->yield(); } - if (!STREAMING::HAS_MODEL_LOADED(hash)) - { + if (!STREAMING::HAS_MODEL_LOADED(hash)) { g_notification_service->push_error("Self", "Failed to spawn model, did you give an incorrect model ? "); return; @@ -45,8 +42,8 @@ namespace big PED::SET_PED_DEFAULT_COMPONENT_VARIATION(self::ped); script::get_current()->yield(); STREAMING::SET_MODEL_AS_NO_LONGER_NEEDED(hash); + }); }); - }); ImGui::Separator(); @@ -73,8 +70,7 @@ namespace big ImGui::BeginGroup(); ImGui::Checkbox("Invisibility", &g->self.invisibility); - if (g->self.invisibility) - { + if (g->self.invisibility) { ImGui::Checkbox("Locally Visible", &g->self.local_visibility); } @@ -82,7 +78,7 @@ namespace big components::button("Clean Player", [] { entity::clean_ped(self::ped); - }); + }); ImGui::EndGroup(); @@ -96,8 +92,99 @@ namespace big { ImGui::Checkbox("Force Wanted Level", &g->self.force_wanted_level); ImGui::Text("Wanted Level"); - if (ImGui::SliderInt("###wanted_level", &g->self.wanted_level, 0, 5) && !g->self.force_wanted_level) + if ( + ImGui::SliderInt("###wanted_level", &g->self.wanted_level, 0, 5) && + !g->self.force_wanted_level && + g_local_player != nullptr + ) { g_local_player->m_player_info->m_wanted_level = g->self.wanted_level; + } + } + + ImGui::Separator(); + + components::small_text("Proofs"); + + if (ImGui::Button("Check all")) { + g->self.proof_bullet = true; + g->self.proof_fire = true; + g->self.proof_collision = true; + g->self.proof_melee = true; + g->self.proof_explosion = true; + g->self.proof_steam = true; + g->self.proof_drown = true; + g->self.proof_water = true; + } + + ImGui::SameLine(); + + if (ImGui::Button("Uncheck all")) { + g->self.proof_bullet = false; + g->self.proof_fire = false; + g->self.proof_collision = false; + g->self.proof_melee = false; + g->self.proof_explosion = false; + g->self.proof_steam = false; + g->self.proof_drown = false; + g->self.proof_water = false; + } + + ImGui::BeginGroup(); + + ImGui::Checkbox("Bullet", &g->self.proof_bullet); + ImGui::Checkbox("Fire", &g->self.proof_fire); + + ImGui::EndGroup(); + ImGui::SameLine(); + ImGui::BeginGroup(); + + ImGui::Checkbox("Collision", &g->self.proof_collision); + ImGui::Checkbox("Melee", &g->self.proof_melee); + + ImGui::EndGroup(); + ImGui::SameLine(); + ImGui::BeginGroup(); + + ImGui::Checkbox("Explosion", &g->self.proof_explosion); + ImGui::Checkbox("Steam", &g->self.proof_steam); + + ImGui::EndGroup(); + ImGui::SameLine(); + ImGui::BeginGroup(); + + ImGui::Checkbox("Drown", &g->self.proof_drown); + ImGui::Checkbox("Water", &g->self.proof_water); + + ImGui::EndGroup(); + + g->self.proof_mask = 0; + if (g->self.godmode) { + g->self.proof_mask |= static_cast(eEntityProofs::GOD); + } else { + if (g->self.proof_bullet) { + g->self.proof_mask |= static_cast(eEntityProofs::BULLET); + } + if (g->self.proof_fire) { + g->self.proof_mask |= static_cast(eEntityProofs::FIRE); + } + if (g->self.proof_collision) { + g->self.proof_mask |= static_cast(eEntityProofs::COLLISION); + } + if (g->self.proof_melee) { + g->self.proof_mask |= static_cast(eEntityProofs::MELEE); + } + if (g->self.proof_explosion) { + g->self.proof_mask |= static_cast(eEntityProofs::EXPLOSION); + } + if (g->self.proof_steam) { + g->self.proof_mask |= static_cast(eEntityProofs::STEAM); + } + if (g->self.proof_drown) { + g->self.proof_mask |= static_cast(eEntityProofs::DROWN); + } + if (g->self.proof_water) { + g->self.proof_mask |= static_cast(eEntityProofs::WATER); + } } } }