Added entity proofs (#304)

This commit is contained in:
aa15032261 2022-07-02 23:15:22 +08:00 committed by GitHub
parent 60911e657b
commit 51d03c8883
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 332 additions and 220 deletions

View File

@ -3,17 +3,19 @@
namespace big namespace big
{ {
static bool bLastGodMode = false; static uint32_t lastProofBits = 0;
void looped::self_godmode() void looped::self_godmode() {
{ if (g_local_player != nullptr) {
bool bGodMode = g->self.godmode; uint32_t proofBits = g->self.proof_mask;
uint32_t changedProofBits = proofBits ^ lastProofBits;
uint32_t changedOrEnabledProofBits = proofBits | changedProofBits;
if (bGodMode || (!bGodMode && bGodMode != bLastGodMode)) if (changedOrEnabledProofBits) {
{ uint32_t unchangedBits = g_local_player->m_damage_bits & ~changedOrEnabledProofBits;
ENTITY::SET_ENTITY_INVINCIBLE(self::ped, g->self.godmode); g_local_player->m_damage_bits = unchangedBits | proofBits;
lastProofBits = proofBits;
bLastGodMode = g->self.godmode; }
} }
} }
} }

View File

@ -1,196 +1,209 @@
#pragma once #pragma once
namespace big namespace big
{ {
enum class CustomWeapon enum class CustomWeapon
{ {
NONE, NONE,
CAGE_GUN, CAGE_GUN,
DELETE_GUN, DELETE_GUN,
GRAVITY_GUN, GRAVITY_GUN,
STEAL_VEHICLE_GUN, STEAL_VEHICLE_GUN,
REPAIR_GUN, REPAIR_GUN,
VEHICLE_GUN VEHICLE_GUN
}; };
enum class ContextEntityType : uint8_t enum class ContextEntityType : uint8_t
{ {
NONE = 0, NONE = 0,
PED = 1 << 0, PED = 1 << 0,
PLAYER = 1 << 1, PLAYER = 1 << 1,
VEHICLE = 1 << 2, VEHICLE = 1 << 2,
OBJECT = 1 << 3, OBJECT = 1 << 3,
SHARED = 1 << 4 SHARED = 1 << 4
}; };
enum class eEntityType enum class eEntityType
{ {
UNK_0, UNK_0,
UNK_1, UNK_1,
UNK_2, UNK_2,
UNK_3, UNK_3,
UNK_4, UNK_4,
VEHICLE, VEHICLE,
PED, PED,
}; };
enum class eTransitionState enum class eTransitionState
{ {
TRANSITION_STATE_EMPTY, TRANSITION_STATE_EMPTY,
TRANSITION_STATE_SP_SWOOP_UP, TRANSITION_STATE_SP_SWOOP_UP,
TRANSITION_STATE_MP_SWOOP_UP, TRANSITION_STATE_MP_SWOOP_UP,
TRANSITION_STATE_CREATOR_SWOOP_UP, TRANSITION_STATE_CREATOR_SWOOP_UP,
TRANSITION_STATE_PRE_HUD_CHECKS, TRANSITION_STATE_PRE_HUD_CHECKS,
TRANSITION_STATE_WAIT_HUD_EXIT, TRANSITION_STATE_WAIT_HUD_EXIT,
TRANSITION_STATE_WAIT_FOR_SUMMON, TRANSITION_STATE_WAIT_FOR_SUMMON,
TRANSITION_STATE_SP_SWOOP_DOWN, TRANSITION_STATE_SP_SWOOP_DOWN,
TRANSITION_STATE_MP_SWOOP_DOWN, TRANSITION_STATE_MP_SWOOP_DOWN,
TRANSITION_STATE_CANCEL_JOINING, TRANSITION_STATE_CANCEL_JOINING,
TRANSITION_STATE_RETRY_LOADING, TRANSITION_STATE_RETRY_LOADING,
TRANSITION_STATE_RETRY_LOADING_SLOT_1, TRANSITION_STATE_RETRY_LOADING_SLOT_1,
TRANSITION_STATE_RETRY_LOADING_SLOT_2, TRANSITION_STATE_RETRY_LOADING_SLOT_2,
TRANSITION_STATE_RETRY_LOADING_SLOT_3, TRANSITION_STATE_RETRY_LOADING_SLOT_3,
TRANSITION_STATE_RETRY_LOADING_SLOT_4, TRANSITION_STATE_RETRY_LOADING_SLOT_4,
TRANSITION_STATE_WAIT_ON_INVITE, TRANSITION_STATE_WAIT_ON_INVITE,
TRANSITION_STATE_PREJOINING_FM_SESSION_CHECKS, TRANSITION_STATE_PREJOINING_FM_SESSION_CHECKS,
TRANSITION_STATE_LOOK_FOR_FRESH_JOIN_FM, TRANSITION_STATE_LOOK_FOR_FRESH_JOIN_FM,
TRANSITION_STATE_LOOK_TO_JOIN_ANOTHER_SESSION_FM, TRANSITION_STATE_LOOK_TO_JOIN_ANOTHER_SESSION_FM,
TRANSITION_STATE_CONFIRM_FM_SESSION_JOINING, TRANSITION_STATE_CONFIRM_FM_SESSION_JOINING,
TRANSITION_STATE_WAIT_JOIN_FM_SESSION, TRANSITION_STATE_WAIT_JOIN_FM_SESSION,
TRANSITION_STATE_CREATION_ENTER_SESSION, TRANSITION_STATE_CREATION_ENTER_SESSION,
TRANSITION_STATE_PRE_FM_LAUNCH_SCRIPT, TRANSITION_STATE_PRE_FM_LAUNCH_SCRIPT,
TRANSITION_STATE_FM_TEAMFULL_CHECK, TRANSITION_STATE_FM_TEAMFULL_CHECK,
TRANSITION_STATE_START_FM_LAUNCH_SCRIPT, TRANSITION_STATE_START_FM_LAUNCH_SCRIPT,
TRANSITION_STATE_FM_TRANSITION_CREATE_PLAYER, TRANSITION_STATE_FM_TRANSITION_CREATE_PLAYER,
TRANSITION_STATE_IS_FM_AND_TRANSITION_READY, TRANSITION_STATE_IS_FM_AND_TRANSITION_READY,
TRANSITION_STATE_FM_SWOOP_DOWN, TRANSITION_STATE_FM_SWOOP_DOWN,
TRANSITION_STATE_POST_BINK_VIDEO_WARP, TRANSITION_STATE_POST_BINK_VIDEO_WARP,
TRANSITION_STATE_FM_FINAL_SETUP_PLAYER, TRANSITION_STATE_FM_FINAL_SETUP_PLAYER,
TRANSITION_STATE_MOVE_FM_TO_RUNNING_STATE, TRANSITION_STATE_MOVE_FM_TO_RUNNING_STATE,
TRANSITION_STATE_FM_HOW_TO_TERMINATE, TRANSITION_STATE_FM_HOW_TO_TERMINATE,
TRANSITION_STATE_START_CREATOR_PRE_LAUNCH_SCRIPT_CHECK, TRANSITION_STATE_START_CREATOR_PRE_LAUNCH_SCRIPT_CHECK,
TRANSITION_STATE_START_CREATOR_LAUNCH_SCRIPT, TRANSITION_STATE_START_CREATOR_LAUNCH_SCRIPT,
TRANSITION_STATE_CREATOR_TRANSITION_CREATE_PLAYER, TRANSITION_STATE_CREATOR_TRANSITION_CREATE_PLAYER,
TRANSITION_STATE_IS_CREATOR_AND_TRANSITION_READY, TRANSITION_STATE_IS_CREATOR_AND_TRANSITION_READY,
TRANSITION_STATE_CREATOR_SWOOP_DOWN, TRANSITION_STATE_CREATOR_SWOOP_DOWN,
TRANSITION_STATE_CREATOR_FINAL_SETUP_PLAYER, TRANSITION_STATE_CREATOR_FINAL_SETUP_PLAYER,
TRANSITION_STATE_MOVE_CREATOR_TO_RUNNING_STATE, TRANSITION_STATE_MOVE_CREATOR_TO_RUNNING_STATE,
TRANSITION_STATE_PREJOINING_TESTBED_SESSION_CHECKS, TRANSITION_STATE_PREJOINING_TESTBED_SESSION_CHECKS,
TRANSITION_STATE_LOOK_FOR_FRESH_JOIN_TESTBED, TRANSITION_STATE_LOOK_FOR_FRESH_JOIN_TESTBED,
TRANSITION_STATE_LOOK_FOR_FRESH_HOST_TESTBED, TRANSITION_STATE_LOOK_FOR_FRESH_HOST_TESTBED,
TRANSITION_STATE_LOOK_TO_JOIN_ANOTHER_SESSION_TESTBED, TRANSITION_STATE_LOOK_TO_JOIN_ANOTHER_SESSION_TESTBED,
TRANSITION_STATE_LOOK_TO_HOST_SESSION_TESTBED, TRANSITION_STATE_LOOK_TO_HOST_SESSION_TESTBED,
TRANSITION_STATE_CONFIRM_TESTBED_SESSION_JOINING, TRANSITION_STATE_CONFIRM_TESTBED_SESSION_JOINING,
TRANSITION_STATE_WAIT_JOIN_TESTBED_SESSION, TRANSITION_STATE_WAIT_JOIN_TESTBED_SESSION,
TRANSITION_STATE_START_TESTBED_LAUNCH_SCRIPT, TRANSITION_STATE_START_TESTBED_LAUNCH_SCRIPT,
TRANSITION_STATE_TESTBED_TRANSITION_CREATE_PLAYER, TRANSITION_STATE_TESTBED_TRANSITION_CREATE_PLAYER,
TRANSITION_STATE_IS_TESTBED_AND_TRANSITION_READY, TRANSITION_STATE_IS_TESTBED_AND_TRANSITION_READY,
TRANSITION_STATE_TESTBED_SWOOP_DOWN, TRANSITION_STATE_TESTBED_SWOOP_DOWN,
TRANSITION_STATE_TESTBED_FINAL_SETUP_PLAYER, TRANSITION_STATE_TESTBED_FINAL_SETUP_PLAYER,
TRANSITION_STATE_MOVE_TESTBED_TO_RUNNING_STATE, TRANSITION_STATE_MOVE_TESTBED_TO_RUNNING_STATE,
TRANSITION_STATE_TESTBED_HOW_TO_TERMINATE, TRANSITION_STATE_TESTBED_HOW_TO_TERMINATE,
TRANSITION_STATE_QUIT_CURRENT_SESSION_PROMPT, TRANSITION_STATE_QUIT_CURRENT_SESSION_PROMPT,
TRANSITION_STATE_WAIT_FOR_TRANSITION_SESSION_TO_SETUP, TRANSITION_STATE_WAIT_FOR_TRANSITION_SESSION_TO_SETUP,
TRANSITION_STATE_TERMINATE_SP, TRANSITION_STATE_TERMINATE_SP,
TRANSITION_STATE_WAIT_TERMINATE_SP, TRANSITION_STATE_WAIT_TERMINATE_SP,
TRANSITION_STATE_KICK_TERMINATE_SESSION, TRANSITION_STATE_KICK_TERMINATE_SESSION,
TRANSITION_STATE_TERMINATE_SESSION, TRANSITION_STATE_TERMINATE_SESSION,
TRANSITION_STATE_WAIT_TERMINATE_SESSION, TRANSITION_STATE_WAIT_TERMINATE_SESSION,
TRANSITION_STATE_TERMINATE_SESSION_AND_HOLD, TRANSITION_STATE_TERMINATE_SESSION_AND_HOLD,
TRANSITION_STATE_TERMINATE_SESSION_AND_MOVE_INTO_HOLDING_STATE, TRANSITION_STATE_TERMINATE_SESSION_AND_MOVE_INTO_HOLDING_STATE,
TRANSITION_STATE_TEAM_SWAPPING_CHECKS, TRANSITION_STATE_TEAM_SWAPPING_CHECKS,
TRANSITION_STATE_RETURN_TO_SINGLEPLAYER, TRANSITION_STATE_RETURN_TO_SINGLEPLAYER,
TRANSITION_STATE_WAIT_FOR_SINGLEPLAYER_TO_START, TRANSITION_STATE_WAIT_FOR_SINGLEPLAYER_TO_START,
TRANSITION_STATE_WAITING_FOR_EXTERNAL_TERMINATION_CALL, TRANSITION_STATE_WAITING_FOR_EXTERNAL_TERMINATION_CALL,
TRANSITION_STATE_TERMINATE_MAINTRANSITION, TRANSITION_STATE_TERMINATE_MAINTRANSITION,
TRANSITION_STATE_WAIT_FOR_DIRTY_LOAD_CONFIRM, TRANSITION_STATE_WAIT_FOR_DIRTY_LOAD_CONFIRM,
TRANSITION_STATE_DLC_INTRO_BINK, TRANSITION_STATE_DLC_INTRO_BINK,
TRANSITION_STATE_MAX = INT_MAX TRANSITION_STATE_MAX = INT_MAX
}; };
enum eVehicleFlags enum eVehicleFlags
{ {
TRIGGER_SPAWN_TOGGLE = 1 << 0, TRIGGER_SPAWN_TOGGLE = 1 << 0,
DESTROYED = 1 << 1, DESTROYED = 1 << 1,
HAS_INSURANCE = 1 << 2, HAS_INSURANCE = 1 << 2,
UNK0 = 1 << 3, UNK0 = 1 << 3,
IMPOUNDED = 1 << 6, IMPOUNDED = 1 << 6,
UNK1 = 1 << 10, UNK1 = 1 << 10,
SPAWN_AT_MORS_MUTUAL = 1 << 11, SPAWN_AT_MORS_MUTUAL = 1 << 11,
UNK2 = 1 << 16 UNK2 = 1 << 16
}; };
enum class ePedTask enum class ePedTask
{ {
TASK_NONE, TASK_NONE,
TASK_FOOT = 1 << 4, TASK_FOOT = 1 << 4,
TASK_UNK = 1 << 5, TASK_UNK = 1 << 5,
TASK_DRIVING = 1 << 6 TASK_DRIVING = 1 << 6
}; };
enum class eRemoteEvent enum class eRemoteEvent
{ {
Bounty = 1294995624, Bounty = 1294995624,
CeoBan = -764524031, CeoBan = -764524031,
CeoKick = 248967238, CeoKick = 248967238,
CeoMoney = 1890277845, CeoMoney = 1890277845,
ClearWantedLevel = -91354030, ClearWantedLevel = -91354030,
Crash = -1386010354, Crash = -1386010354,
FakeDeposit = 677240627, FakeDeposit = 677240627,
ForceMission = 2020588206, ForceMission = 2020588206,
GtaBanner = 1572255940, GtaBanner = 1572255940,
MCTeleport = 962740265, MCTeleport = 962740265,
NetworkBail = 1228916411, NetworkBail = 1228916411,
PersonalVehicleDestroyed = 802133775, PersonalVehicleDestroyed = 802133775,
RemoteOffradar = -391633760, RemoteOffradar = -391633760,
RotateCam = 801199324, RotateCam = 801199324,
SendToCutscene = 1068259786, SendToCutscene = 1068259786,
SendToIsland = -621279188, SendToIsland = -621279188,
SendToCayo = 1463943751, SendToCayo = 1463943751,
SoundSpam = 1132878564, SoundSpam = 1132878564,
Spectate = -1113591308, Spectate = -1113591308,
Teleport = 603406648, Teleport = 603406648,
TransactionError = -1704141512, TransactionError = -1704141512,
VehicleKick = 578856274, VehicleKick = 578856274,
Unknown1 = -145306724, Unknown1 = -145306724,
Unknown2 = -581037897, Unknown2 = -581037897,
Unknown3 = 1757755807, Unknown3 = 1757755807,
Unknown4 = 436475575, Unknown4 = 436475575,
Unknown5 = 990606644, Unknown5 = 990606644,
Unknown6 = 69874647, Unknown6 = 69874647,
SEC3 = -2113023004, SEC3 = -2113023004,
SEC6 = 704979198, SEC6 = 704979198,
SEC7 = -1715193475, SEC7 = -1715193475,
SEC8 = 1258808115, SEC8 = 1258808115,
SEC9 = 2112408256, SEC9 = 2112408256,
SEC10 = 998716537, SEC10 = 998716537,
SEC11 = 163598572, SEC11 = 163598572,
SEC12 = -1970125962, SEC12 = -1970125962,
SEC13 = -1056683619, SEC13 = -1056683619,
Spaghettios = -393294520, Spaghettios = -393294520,
ForceMission2 = -1525161016, ForceMission2 = -1525161016,
SHKick = -786546101 SHKick = -786546101
}; };
enum class eSessionType enum class eSessionType
{ {
JOIN_PUBLIC, JOIN_PUBLIC,
NEW_PUBLIC, NEW_PUBLIC,
CLOSED_CREW, CLOSED_CREW,
CREW, CREW,
CLOSED_FRIENDS = 6, CLOSED_FRIENDS = 6,
FIND_FRIEND = 9, FIND_FRIEND = 9,
SOLO, SOLO,
INVITE_ONLY, INVITE_ONLY,
JOIN_CREW, JOIN_CREW,
LEAVE_ONLINE = -1 LEAVE_ONLINE = -1
}; };
enum class SpeedoMeter enum class SpeedoMeter
{ {
DISABLED, DISABLED,
KMH, KMH,
MPH 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,
};
}

View File

@ -142,6 +142,16 @@ namespace big
bool off_radar = false; bool off_radar = false;
bool super_run = false; bool super_run = false;
int wanted_level = 0; 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 struct session

View File

@ -7,35 +7,32 @@ namespace big
void view::self() { void view::self() {
components::button("Suicide", [] { components::button("Suicide", [] {
ENTITY::SET_ENTITY_HEALTH(self::ped, 0, 0); ENTITY::SET_ENTITY_HEALTH(self::ped, 0, 0);
}); });
ImGui::SameLine(); ImGui::SameLine();
components::button("Heal", [] { components::button("Heal", [] {
ENTITY::SET_ENTITY_HEALTH(self::ped, PED::GET_PED_MAX_HEALTH(self::ped), 0); 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)); PED::SET_PED_ARMOUR(self::ped, PLAYER::GET_PLAYER_MAX_ARMOUR(self::id));
}); });
ImGui::SameLine(); ImGui::SameLine();
components::button("Skip Cutscene", [] { components::button("Skip Cutscene", [] {
CUTSCENE::STOP_CUTSCENE_IMMEDIATELY(); CUTSCENE::STOP_CUTSCENE_IMMEDIATELY();
}); });
static char model[32]; 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([] { g_fiber_pool->queue_job([] {
const Hash hash = rage::joaat(model); 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); STREAMING::REQUEST_MODEL(hash);
script::get_current()->yield(); 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 ? "); g_notification_service->push_error("Self", "Failed to spawn model, did you give an incorrect model ? ");
return; return;
@ -45,8 +42,8 @@ namespace big
PED::SET_PED_DEFAULT_COMPONENT_VARIATION(self::ped); PED::SET_PED_DEFAULT_COMPONENT_VARIATION(self::ped);
script::get_current()->yield(); script::get_current()->yield();
STREAMING::SET_MODEL_AS_NO_LONGER_NEEDED(hash); STREAMING::SET_MODEL_AS_NO_LONGER_NEEDED(hash);
});
}); });
});
ImGui::Separator(); ImGui::Separator();
@ -73,8 +70,7 @@ namespace big
ImGui::BeginGroup(); ImGui::BeginGroup();
ImGui::Checkbox("Invisibility", &g->self.invisibility); ImGui::Checkbox("Invisibility", &g->self.invisibility);
if (g->self.invisibility) if (g->self.invisibility) {
{
ImGui::Checkbox("Locally Visible", &g->self.local_visibility); ImGui::Checkbox("Locally Visible", &g->self.local_visibility);
} }
@ -82,7 +78,7 @@ namespace big
components::button("Clean Player", [] { components::button("Clean Player", [] {
entity::clean_ped(self::ped); entity::clean_ped(self::ped);
}); });
ImGui::EndGroup(); ImGui::EndGroup();
@ -96,8 +92,99 @@ namespace big
{ {
ImGui::Checkbox("Force Wanted Level", &g->self.force_wanted_level); ImGui::Checkbox("Force Wanted Level", &g->self.force_wanted_level);
ImGui::Text("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; 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<int>(eEntityProofs::GOD);
} else {
if (g->self.proof_bullet) {
g->self.proof_mask |= static_cast<int>(eEntityProofs::BULLET);
}
if (g->self.proof_fire) {
g->self.proof_mask |= static_cast<int>(eEntityProofs::FIRE);
}
if (g->self.proof_collision) {
g->self.proof_mask |= static_cast<int>(eEntityProofs::COLLISION);
}
if (g->self.proof_melee) {
g->self.proof_mask |= static_cast<int>(eEntityProofs::MELEE);
}
if (g->self.proof_explosion) {
g->self.proof_mask |= static_cast<int>(eEntityProofs::EXPLOSION);
}
if (g->self.proof_steam) {
g->self.proof_mask |= static_cast<int>(eEntityProofs::STEAM);
}
if (g->self.proof_drown) {
g->self.proof_mask |= static_cast<int>(eEntityProofs::DROWN);
}
if (g->self.proof_water) {
g->self.proof_mask |= static_cast<int>(eEntityProofs::WATER);
}
} }
} }
} }