2022-10-26 14:12:29 +02:00
# include "views/view.hpp"
2022-05-04 19:16:40 +02:00
# include "fiber_pool.hpp"
# include "util/session.hpp"
2022-11-12 07:13:01 +08:00
# include "core/data/region_codes.hpp"
2022-11-14 23:37:38 +08:00
# include "gta_util.hpp"
# include "util/notify.hpp"
2022-11-21 15:42:12 +00:00
# include "util/scripts.hpp"
2022-12-06 16:12:02 +00:00
# include "util/toxic.hpp"
# include "core/data/apartment_names.hpp"
# include "core/data/warehouse_names.hpp"
2022-12-22 21:23:32 +00:00
# include "core/data/command_access_levels.hpp"
2022-12-17 14:47:01 +00:00
# include <network/Network.hpp>
2022-12-22 21:23:32 +00:00
# include "hooking.hpp"
2022-05-04 19:16:40 +02:00
namespace big
{
2022-07-06 11:59:08 +02:00
void view : : session ( )
{
2022-10-26 14:12:29 +02:00
static uint64_t rid = 0 ;
ImGui : : InputScalar ( " Input RID " , ImGuiDataType_U64 , & rid ) ;
2022-12-17 17:24:45 +01:00
components : : button ( " Join by RID " , [ ]
2022-10-26 14:12:29 +02:00
{
session : : join_by_rockstar_id ( rid ) ;
} ) ;
2022-12-17 17:24:45 +01:00
static char username [ 20 ] ;
ImGui : : InputText ( " Input Username " , username , sizeof ( username ) ) ;
if ( components : : button ( " Join by Username " ) )
{
session : : join_by_username ( username ) ;
} ;
2022-12-17 14:47:01 +00:00
static char base64 [ 500 ] { } ;
ImGui : : InputText ( " Session Info " , base64 , sizeof ( base64 ) ) ;
components : : button ( " Join Session Info " , [ ]
{
rage : : rlSessionInfo info ;
g_pointers - > m_decode_session_info ( & info , base64 , nullptr ) ;
session : : join_session ( info ) ;
} ) ;
ImGui : : SameLine ( ) ;
components : : button ( " Copy Current Session Info " , [ ]
{
char buf [ 0x100 ] ;
g_pointers - > m_encode_session_info ( & gta_util : : get_network ( ) - > m_game_session . m_rline_session . m_session_info , buf , 0x7D , nullptr ) ;
ImGui : : SetClipboardText ( buf ) ;
} ) ;
2022-08-10 08:42:34 +08:00
components : : sub_title ( " Session Switcher " ) ;
2022-07-06 11:59:08 +02:00
if ( ImGui : : ListBoxHeader ( " ###session_switch " ) )
2022-05-04 19:16:40 +02:00
{
2022-07-06 11:59:08 +02:00
for ( const auto & session_type : sessions )
{
2022-10-26 14:12:29 +02:00
components : : selectable ( session_type . name , false , [ & session_type ]
2022-10-19 00:30:32 +02:00
{
session : : join_type ( session_type . id ) ;
2022-07-06 11:59:08 +02:00
} ) ;
}
ImGui : : EndListBox ( ) ;
2022-05-04 19:16:40 +02:00
}
2022-11-12 07:13:01 +08:00
components : : sub_title ( " Region Switcher " ) ;
if ( ImGui : : ListBoxHeader ( " ###region_switch " ) )
{
for ( const auto & region_type : regions )
{
components : : selectable ( region_type . name , * g_pointers - > m_region_code = = region_type . id , [ & region_type ]
{
* g_pointers - > m_region_code = region_type . id ;
} ) ;
}
ImGui : : EndListBox ( ) ;
}
2022-10-26 15:38:01 -04:00
2022-12-18 23:15:52 +01:00
ImGui : : Checkbox ( " Join in SCTV slots " , & g . session . join_in_sctv_slots ) ;
2022-11-24 21:49:05 +00:00
if ( ImGui : : IsItemHovered ( ) )
ImGui : : SetTooltip ( " Allows you to join full and solo sessions but can be detected by other modders " ) ;
2022-11-19 01:49:36 +00:00
components : : sub_title ( " Player Magnet " ) ;
2022-12-18 23:15:52 +01:00
ImGui : : Checkbox ( " Enabled " , & g . session . player_magnet_enabled ) ;
if ( g . session . player_magnet_enabled )
2022-11-19 01:49:36 +00:00
{
2022-12-18 23:15:52 +01:00
ImGui : : InputInt ( " Player Count " , & g . session . player_magnet_count ) ;
2022-11-19 01:49:36 +00:00
}
2022-10-29 05:54:32 -04:00
components : : sub_title ( " Chat " ) ;
2022-12-18 23:15:52 +01:00
ImGui : : Checkbox ( " Auto-kick Chat Spammers " , & g . session . kick_chat_spammers ) ;
ImGui : : Checkbox ( " Disable Filter " , & g . session . disable_chat_filter ) ;
ImGui : : Checkbox ( " Log Chat Messages " , & g . session . log_chat_messages ) ;
ImGui : : Checkbox ( " Log Text Messages " , & g . session . log_text_messages ) ;
2022-11-14 23:37:38 +08:00
static char msg [ 256 ] ;
ImGui : : InputText ( " ##message " , msg , sizeof ( msg ) ) ;
ImGui : : SameLine ( ) ;
2022-12-18 23:15:52 +01:00
ImGui : : Checkbox ( " Is Team " , & g . session . is_team ) ;
2022-11-14 23:37:38 +08:00
ImGui : : SameLine ( ) ;
components : : button ( " Send " , [ ]
{
2022-12-22 21:23:32 +00:00
if ( const auto net_game_player = gta_util : : get_network_player_mgr ( ) - > m_local_net_player ; net_game_player )
2022-11-14 23:37:38 +08:00
{
2022-12-22 21:23:32 +00:00
if ( g_hooking - > get_original < hooks : : send_chat_message > ( ) ( * g_pointers - > m_send_chat_ptr , net_game_player - > get_net_data ( ) , msg , g . session . is_team ) )
2022-12-18 23:15:52 +01:00
notify : : draw_chat ( msg , net_game_player - > get_name ( ) , g . session . is_team ) ;
2022-11-14 23:37:38 +08:00
}
} ) ;
2022-11-12 18:35:28 +00:00
2022-12-22 21:23:32 +00:00
ImGui : : Checkbox ( " Chat Commands " , & g . session . chat_commands ) ;
if ( g . session . chat_commands )
{
if ( ImGui : : BeginCombo ( " Default Command Permissions " , COMMAND_ACCESS_LEVELS [ g . session . chat_command_default_access_level ] ) )
{
for ( const auto & [ type , name ] : COMMAND_ACCESS_LEVELS )
{
if ( ImGui : : Selectable ( name , type = = g . session . chat_command_default_access_level ) )
{
g . session . chat_command_default_access_level = type ;
}
if ( type = = g . session . chat_command_default_access_level )
{
ImGui : : SetItemDefaultFocus ( ) ;
}
}
ImGui : : EndCombo ( ) ;
}
}
2022-11-12 18:35:28 +00:00
components : : sub_title ( " Decloak " ) ;
2022-12-18 23:15:52 +01:00
components : : script_patch_checkbox ( " Reveal OTR Players " , & g . session . decloak_players ) ;
2022-11-13 16:34:44 +00:00
components : : sub_title ( " Force Host " ) ;
2022-12-18 23:15:52 +01:00
ImGui : : Checkbox ( " Force Session Host " , & g . session . force_session_host ) ;
2022-11-13 16:34:44 +00:00
if ( ImGui : : IsItemHovered ( ) )
ImGui : : SetTooltip ( " Join another session to apply changes. The original host of the session must leave or be kicked. This feature is easily detectable by other mod menus, use with caution " ) ;
2022-12-06 16:12:02 +00:00
ImGui : : SameLine ( ) ;
2022-12-18 23:15:52 +01:00
if ( g . session . force_session_host )
2022-12-06 16:12:02 +00:00
{
ImGui : : SameLine ( ) ;
2022-12-18 23:15:52 +01:00
ImGui : : Checkbox ( " Kick Host During Join " , & g . session . kick_host_when_forcing_host ) ;
2022-12-06 16:12:02 +00:00
}
2022-12-18 23:15:52 +01:00
if ( ImGui : : Checkbox ( " Force Script Host " , & g . session . force_script_host ) )
2022-12-06 16:12:02 +00:00
{
2022-12-18 23:15:52 +01:00
if ( g . session . force_script_host )
2022-12-06 16:12:02 +00:00
g_fiber_pool - > queue_job ( [ ]
{
scripts : : force_host ( RAGE_JOAAT ( " freemode " ) ) ;
if ( auto script = gta_util : : find_script_thread ( RAGE_JOAAT ( " freemode " ) ) ; script & & script - > m_net_component )
script - > m_net_component - > block_host_migration ( true ) ;
} ) ;
}
2022-11-21 15:42:12 +00:00
components : : sub_title ( " Remote Name Spoofing " ) ;
2022-12-18 23:15:52 +01:00
ImGui : : Checkbox ( " Spoof Other Players' Names " , & g . session . name_spoof_enabled ) ;
2022-11-21 15:42:12 +00:00
if ( ImGui : : IsItemHovered ( ) )
ImGui : : SetTooltip ( " Requires session host. Spoofed names will not visible locally nor to the player that had their name spoofed. Requires players to join after becoming host " ) ;
2022-12-18 23:15:52 +01:00
if ( g . session . name_spoof_enabled )
2022-11-21 15:42:12 +00:00
{
2022-12-18 23:15:52 +01:00
ImGui : : Checkbox ( " Advertise YimMenu " , & g . session . advertise_menu ) ;
2022-11-21 15:42:12 +00:00
if ( ImGui : : IsItemHovered ( ) )
ImGui : : SetTooltip ( " Advertise YimMenu by spoofing player names to differently colored variants of 'YimMenu'. You will not be able to customize the name with this option enabled " ) ;
2022-12-18 23:15:52 +01:00
if ( ! g . session . advertise_menu )
2022-11-21 15:42:12 +00:00
{
constexpr size_t name_size = RTL_FIELD_SIZE ( rage : : rlGamerInfo , m_name ) ;
static char name [ name_size ] ;
2022-12-18 23:15:52 +01:00
strcpy_s ( name , sizeof ( name ) , g . session . spoofed_name . c_str ( ) ) ;
2022-11-21 15:42:12 +00:00
ImGui : : Text ( " Name: " ) ;
ImGui : : InputText ( " ##username_input " , name , sizeof ( name ) ) ;
2022-12-18 23:15:52 +01:00
if ( name ! = g . session . spoofed_name )
g . session . spoofed_name = std : : string ( name ) ;
2022-11-21 15:42:12 +00:00
}
}
components : : sub_title ( " All Players " ) ;
2022-12-18 23:15:52 +01:00
ImGui : : Checkbox ( " Off The Radar " , & g . session . off_radar_all ) ;
2022-12-06 16:12:02 +00:00
ImGui : : SameLine ( ) ;
2022-12-18 23:15:52 +01:00
ImGui : : Checkbox ( " Never Wanted " , & g . session . never_wanted_all ) ;
2022-12-06 16:12:02 +00:00
ImGui : : SameLine ( ) ;
2022-12-18 23:15:52 +01:00
ImGui : : Checkbox ( " Semi Godmode " , & g . session . semi_godmode_all ) ;
2022-11-21 15:42:12 +00:00
2022-12-18 23:15:52 +01:00
ImGui : : Checkbox ( " Explosion Karma " , & g . session . explosion_karma ) ;
2022-12-06 16:12:02 +00:00
ImGui : : SameLine ( ) ;
2022-12-18 23:15:52 +01:00
ImGui : : Checkbox ( " Damage Karma " , & g . session . damage_karma ) ;
2022-12-06 16:12:02 +00:00
static int global_wanted_level = 0 ;
if ( ImGui : : SliderInt ( " Wanted Level " , & global_wanted_level , 0 , 5 ) )
{
* scr_globals : : globalplayer_bd . at ( self : : id , scr_globals : : size : : globalplayer_bd ) . at ( 213 ) . as < int * > ( ) = global_wanted_level ;
}
ImGui : : SameLine ( ) ;
2022-12-18 23:15:52 +01:00
if ( ImGui : : Checkbox ( " Force " , & g . session . wanted_level_all ) )
2022-12-06 16:12:02 +00:00
{
* scr_globals : : globalplayer_bd . at ( self : : id , scr_globals : : size : : globalplayer_bd ) . at ( 212 ) . as < Player * > ( ) = __rdtsc ( ) + 32 ;
* scr_globals : : globalplayer_bd . at ( self : : id , scr_globals : : size : : globalplayer_bd ) . at ( 213 ) . as < int * > ( ) = global_wanted_level ;
}
2022-12-22 21:23:32 +00:00
components : : command_button < " killall " > ( { } , " Kill Everyone " ) ;
2022-12-06 16:12:02 +00:00
ImGui : : SameLine ( ) ;
2022-12-22 21:23:32 +00:00
components : : command_button < " beastall " > ( { } ) ;
2022-12-06 16:12:02 +00:00
if ( ImGui : : IsItemHovered ( ) )
ImGui : : SetTooltip ( " Including you " ) ;
2022-12-22 21:23:32 +00:00
components : : command_button < " giveweapsall " > ( { } ) ;
2022-12-06 16:12:02 +00:00
ImGui : : SameLine ( ) ;
2022-12-22 21:23:32 +00:00
components : : command_button < " remweapsall " > ( { } ) ;
2022-12-06 16:12:02 +00:00
2022-12-22 21:23:32 +00:00
components : : command_button < " ceokickall " > ( { } ) ;
ImGui : : SameLine ( ) ;
components : : command_button < " vehkickall " > ( { } ) ;
components : : command_button < " ragdollall " > ( { } , " Ragdoll Players " ) ;
components : : command_button < " intkickall " > ( { } , " Kick Everyone From Interiors " ) ;
2022-12-17 14:47:01 +00:00
2022-12-06 16:12:02 +00:00
components : : small_text ( " Teleports " ) ;
2022-12-18 23:15:52 +01:00
if ( ImGui : : BeginCombo ( " ##apartment " , apartment_names [ g . session . send_to_apartment_idx ] ) )
2022-12-06 16:12:02 +00:00
{
for ( int i = 1 ; i < apartment_names . size ( ) ; i + + )
{
2022-12-18 23:15:52 +01:00
if ( ImGui : : Selectable ( apartment_names [ i ] , i = = g . session . send_to_apartment_idx ) )
2022-12-06 16:12:02 +00:00
{
2022-12-18 23:15:52 +01:00
g . session . send_to_apartment_idx = i ;
2022-12-06 16:12:02 +00:00
}
2022-12-18 23:15:52 +01:00
if ( i = = g . session . send_to_apartment_idx )
2022-12-06 16:12:02 +00:00
{
ImGui : : SetItemDefaultFocus ( ) ;
}
}
ImGui : : EndCombo ( ) ;
}
ImGui : : SameLine ( ) ;
2022-12-22 21:23:32 +00:00
components : : command_button < " apartmenttpall " > ( { ( uint64_t ) g . session . send_to_apartment_idx } , " TP All To Apartment " ) ;
2022-12-06 16:12:02 +00:00
2022-12-18 23:15:52 +01:00
if ( ImGui : : BeginCombo ( " ##warehouse " , warehouse_names [ g . session . send_to_warehouse_idx ] ) )
2022-12-06 16:12:02 +00:00
{
for ( int i = 1 ; i < warehouse_names . size ( ) ; i + + )
{
2022-12-18 23:15:52 +01:00
if ( ImGui : : Selectable ( warehouse_names [ i ] , i = = g . session . send_to_warehouse_idx ) )
2022-12-06 16:12:02 +00:00
{
2022-12-18 23:15:52 +01:00
g . session . send_to_warehouse_idx = i ;
2022-12-06 16:12:02 +00:00
}
2022-12-18 23:15:52 +01:00
if ( i = = g . session . send_to_warehouse_idx )
2022-12-06 16:12:02 +00:00
{
ImGui : : SetItemDefaultFocus ( ) ;
}
}
ImGui : : EndCombo ( ) ;
}
ImGui : : SameLine ( ) ;
2022-12-22 21:23:32 +00:00
components : : command_button < " warehousetpall " > ( { ( uint64_t ) g . session . send_to_warehouse_idx } , " TP All To Warehouse " ) ;
2022-12-06 16:12:02 +00:00
components : : button ( " TP All To Darts " , [ ] { g_player_service - > iterate ( [ ] ( auto & plyr ) { toxic : : start_activity ( plyr . second , eActivityType : : Darts ) ; } ) ; } ) ;
ImGui : : SameLine ( ) ;
components : : button ( " TP All To Flight School " , [ ] { g_player_service - > iterate ( [ ] ( auto & plyr ) { toxic : : start_activity ( plyr . second , eActivityType : : PilotSchool ) ; } ) ; } ) ;
ImGui : : SameLine ( ) ;
components : : button ( " TP All To Map Center " , [ ] { g_player_service - > iterate ( [ ] ( auto & plyr ) { toxic : : start_activity ( plyr . second , eActivityType : : ArmWresling ) ; } ) ; } ) ;
components : : button ( " TP All To Skydive " , [ ] { g_player_service - > iterate ( [ ] ( auto & plyr ) { toxic : : start_activity ( plyr . second , eActivityType : : Skydive ) ; } ) ; } ) ;
ImGui : : SameLine ( ) ;
2022-12-22 21:23:32 +00:00
components : : command_button < " interiortpall " > ( { 81 } , " TP All To MOC " ) ;
2022-12-06 16:12:02 +00:00
2022-12-22 21:23:32 +00:00
components : : command_button < " interiortpall " > ( { 123 } , " TP All To Casino " ) ;
2022-12-06 16:12:02 +00:00
ImGui : : SameLine ( ) ;
2022-12-22 21:23:32 +00:00
components : : command_button < " interiortpall " > ( { 124 } , " TP All To Penthouse " ) ;
2022-12-06 16:12:02 +00:00
ImGui : : SameLine ( ) ;
2022-12-22 21:23:32 +00:00
components : : command_button < " interiortpall " > ( { 128 } , " TP All To Arcade " ) ;
2022-12-06 16:12:02 +00:00
2022-12-22 21:23:32 +00:00
components : : command_button < " interiortpall " > ( { 146 } , " TP All To Music Locker " ) ;
2022-12-06 16:12:02 +00:00
ImGui : : SameLine ( ) ;
2022-12-22 21:23:32 +00:00
components : : command_button < " interiortpall " > ( { 148 } , " TP All To Record A Studios " ) ;
2022-12-06 16:12:02 +00:00
ImGui : : SameLine ( ) ;
2022-12-22 21:23:32 +00:00
components : : command_button < " interiortpall " > ( { 149 } , " TP All To Custom Auto Shop " ) ;
2022-12-06 16:12:02 +00:00
2022-12-22 21:23:32 +00:00
components : : command_button < " interiortpall " > ( { 155 } , " TP All To Agency " ) ;
2022-12-14 16:27:40 +00:00
ImGui : : SameLine ( ) ;
2022-12-22 21:23:32 +00:00
components : : command_button < " interiortpall " > ( { 160 } , " TP All To Freakshop " ) ;
2022-12-14 16:27:40 +00:00
ImGui : : SameLine ( ) ;
2022-12-22 21:23:32 +00:00
components : : command_button < " interiortpall " > ( { 161 } , " TP All To Multi Floor Garage " ) ;
2022-12-06 16:12:02 +00:00
2022-11-21 15:42:12 +00:00
components : : sub_title ( " Event Starter " ) ;
ImGui : : BeginGroup ( ) ;
components : : button ( " Hot Target " , [ ] { scripts : : start_launcher_script ( 36 ) ; } ) ;
components : : button ( " Kill List " , [ ] { scripts : : start_launcher_script ( 37 ) ; } ) ;
components : : button ( " Checkpoints " , [ ] { scripts : : start_launcher_script ( 39 ) ; } ) ;
components : : button ( " Challenges " , [ ] { scripts : : start_launcher_script ( 40 ) ; } ) ;
components : : button ( " Penned In " , [ ] { scripts : : start_launcher_script ( 41 ) ; } ) ;
ImGui : : EndGroup ( ) ;
ImGui : : SameLine ( ) ;
ImGui : : BeginGroup ( ) ;
components : : button ( " Hot Property " , [ ] { scripts : : start_launcher_script ( 43 ) ; } ) ;
components : : button ( " King Of The Castle " , [ ] { scripts : : start_launcher_script ( 45 ) ; } ) ;
components : : button ( " Criminal Damage " , [ ] { scripts : : start_launcher_script ( 46 ) ; } ) ;
components : : button ( " Hunt The Beast " , [ ] { scripts : : start_launcher_script ( 47 ) ; } ) ;
components : : button ( " Business Battles " , [ ] { scripts : : start_launcher_script ( 114 ) ; } ) ;
ImGui : : EndGroup ( ) ;
2022-12-06 16:12:02 +00:00
ImGui : : SameLine ( ) ;
ImGui : : BeginGroup ( ) ;
2022-12-17 14:47:01 +00:00
components : : button ( " One-On-One Deathmatch " , [ ] { scripts : : start_launcher_script ( 197 ) ; } ) ;
2022-12-06 16:12:02 +00:00
components : : button ( " Impromptu Race " , [ ] { scripts : : start_launcher_script ( 16 ) ; } ) ;
2022-12-17 14:47:01 +00:00
components : : button ( " Flight School " , [ ] { scripts : : start_launcher_script ( 196 ) ; } ) ;
components : : button ( " Golf " , [ ] { scripts : : start_launcher_script ( 193 ) ; } ) ;
2022-12-06 16:12:02 +00:00
components : : button ( " Tutorial " , [ ] { scripts : : start_launcher_script ( 20 ) ; } ) ;
if ( ImGui : : IsItemHovered ( ) )
ImGui : : SetTooltip ( " Only works on joining players " ) ;
ImGui : : EndGroup ( ) ;
ImGui : : SameLine ( ) ;
ImGui : : BeginGroup ( ) ;
2022-12-17 14:47:01 +00:00
components : : button ( " Gunslinger " , [ ] { scripts : : start_launcher_script ( 211 ) ; } ) ;
components : : button ( " Space Monkey " , [ ] { scripts : : start_launcher_script ( 216 ) ; } ) ;
components : : button ( " Wizard " , [ ] { scripts : : start_launcher_script ( 212 ) ; } ) ;
components : : button ( " QUB3D " , [ ] { scripts : : start_launcher_script ( 217 ) ; } ) ;
components : : button ( " Camhedz " , [ ] { scripts : : start_launcher_script ( 218 ) ; } ) ;
2022-12-06 16:12:02 +00:00
ImGui : : EndGroup ( ) ;
2022-12-18 23:15:52 +01:00
ImGui : : Checkbox ( " Disable Pedestrians " , & g . session . disable_peds ) ;
2022-12-06 16:12:02 +00:00
ImGui : : SameLine ( ) ;
2022-12-18 23:15:52 +01:00
ImGui : : Checkbox ( " Disable Traffic " , & g . session . disable_traffic ) ;
2022-12-06 16:12:02 +00:00
ImGui : : SameLine ( ) ;
2022-12-18 23:15:52 +01:00
ImGui : : Checkbox ( " Force Thunder " , & g . session . force_thunder ) ;
2022-12-06 16:12:02 +00:00
2022-12-19 17:39:06 +00:00
components : : small_text ( " Warp Time (requires session host) " ) ;
components : : button ( " +1 Minute " , [ ] { toxic : : warp_time_forward_all ( 60 * 1000 ) ; } ) ;
ImGui : : SameLine ( ) ;
components : : button ( " +5 Minutes " , [ ] { toxic : : warp_time_forward_all ( 5 * 60 * 1000 ) ; } ) ;
ImGui : : SameLine ( ) ;
components : : button ( " +48 Minutes " , [ ] { toxic : : warp_time_forward_all ( 48 * 60 * 1000 ) ; } ) ;
ImGui : : SameLine ( ) ;
components : : button ( " +96 Minutes " , [ ] { toxic : : warp_time_forward_all ( 96 * 60 * 1000 ) ; } ) ;
ImGui : : SameLine ( ) ;
components : : button ( " +200 Minutes " , [ ] { toxic : : warp_time_forward_all ( 200 * 60 * 1000 ) ; } ) ;
ImGui : : SameLine ( ) ;
components : : button ( " Stop Time " , [ ] { toxic : : set_time_all ( INT_MAX - 3000 ) ; } ) ;
if ( ImGui : : IsItemHovered ( ) )
ImGui : : SetTooltip ( " This cannot be reversed. Use with caution " ) ;
2022-12-06 16:12:02 +00:00
components : : sub_title ( " Script Host Features " ) ;
2022-12-18 23:15:52 +01:00
ImGui : : Checkbox ( " Disable CEO Money " , & g . session . block_ceo_money ) ;
2022-12-06 16:12:02 +00:00
if ( ImGui : : IsItemHovered ( ) )
ImGui : : SetTooltip ( " Blocks CEO money drops across the entire session. This can also break other stuff, use with caution " ) ;
ImGui : : SameLine ( ) ;
2022-12-18 23:15:52 +01:00
ImGui : : Checkbox ( " Randomize CEO Colors " , & g . session . randomize_ceo_colors ) ;
2022-05-04 19:16:40 +02:00
}
2022-10-26 14:12:29 +02:00
}