#include maps\mp\_utility; #include common_scripts\utility; init() { if ( isGrapplingHookGameMode() ) { thread grappling_hook_on_player_spawn(); } } grappling_hook_on_player_spawn() { level endon( "game_ended" ); while ( true ) { level waittill( "player_spawned", player ); player give_grappling_hook(); } } //============================================================================== give_grappling_hook() // self = player, should not be threaded //============================================================================== { grapplingHookWeapon = get_grappling_hook_weapon(); if ( self HasWeapon( grapplingHookWeapon ) ) return; self SetTacticalWeapon( grapplingHookWeapon ); self giveWeapon( grapplingHookWeapon ); self notify( "grappling_hook_reset" ); // clear any old threads that were spawned from a previous iteration of this function... this is required for timing reasons self thread wait_for_grappling_hook_pressed(); } //============================================================================== wait_for_grappling_hook_pressed() // should be threaded //============================================================================== { level endon( "game_ended" ); self endon( "death" ); self endon( "disconnect" ); self endon( "faux_spawn" ); self endon( "joined_team" ); self endon( "grappling_hook_reset" ); while ( true ) { self waittill( "exo_ability_activate", weaponName ); if ( weaponName == level.grapplingHookWeapon ) { } } } //============================================================================== take_grappling_hook() // self = player, should not be threaded //============================================================================== { grapplingHookWeapon = get_grappling_hook_weapon(); self takeWeapon( grapplingHookWeapon ); self notify( "grappling_hook_reset" ); } get_grappling_hook_weapon() { if ( IsDefined( level.grapplingHookWeapon ) ) return level.grapplingHookWeapon; level.grapplingHookWeapon = "iw5_dlcgun12loot7_mp"; return level.grapplingHookWeapon; }