1
0
mirror of https://github.com/JezuzLizard/BO2-Reimagined.git synced 2025-06-10 15:17:57 -05:00
Files
BO2-Reimagined/scripts/zm/replaced/_zm_craftables.gsc

211 lines
6.7 KiB
Plaintext

#include maps\mp\zombies\_zm_craftables;
#include common_scripts\utility;
#include maps\mp\_utility;
#include maps\mp\zombies\_zm_utility;
#include maps\mp\gametypes_zm\_hud_util;
#include maps\mp\zombies\_zm_laststand;
#include maps\mp\zombies\_zm_equipment;
#include maps\mp\zombies\_zm_unitrigger;
#include maps\mp\zombies\_zm_stats;
#include maps\mp\zombies\_zm_weapons;
#include maps\mp\_demo;
choose_open_craftable( player )
{
self endon( "kill_choose_open_craftable" );
n_playernum = player getentitynumber();
self.b_open_craftable_checking_input = 1;
b_got_input = 1;
hinttexthudelem = newclienthudelem( player );
hinttexthudelem.alignx = "center";
hinttexthudelem.aligny = "middle";
hinttexthudelem.horzalign = "center";
hinttexthudelem.vertalign = "bottom";
hinttexthudelem.y = -100;
if ( player issplitscreen() )
hinttexthudelem.y = -50;
hinttexthudelem.foreground = 1;
hinttexthudelem.hidewheninmenu = 1;
hinttexthudelem.font = "default";
hinttexthudelem.fontscale = 1.0;
hinttexthudelem.alpha = 1;
hinttexthudelem.color = ( 1, 1, 1 );
hinttexthudelem settext( &"ZM_CRAFTABLES_CHANGE_BUILD" );
if ( !isdefined( self.opencraftablehudelem ) )
self.opencraftablehudelem = [];
self.opencraftablehudelem[n_playernum] = hinttexthudelem;
if ( self.n_open_craftable_choice < 0 )
{
self.n_open_craftable_choice = self.a_uts_open_craftables_available.size - 1;
self.equipname = self.a_uts_open_craftables_available[self.n_open_craftable_choice].equipname;
self.hint_string = self.a_uts_open_craftables_available[self.n_open_craftable_choice].hint_string;
self.playertrigger[n_playernum] sethintstring( self.hint_string );
}
while ( isdefined( self.playertrigger[n_playernum] ) && !self.crafted )
{
if (!player isTouching(self.playertrigger[n_playernum]) || !player is_player_looking_at( self.playertrigger[n_playernum].origin, 0.76 ) || player isSprinting() || player isThrowingGrenade())
{
self.opencraftablehudelem[n_playernum].alpha = 0;
wait 0.05;
continue;
}
self.opencraftablehudelem[n_playernum].alpha = 1;
if ( player actionslotonebuttonpressed() )
{
self.n_open_craftable_choice++;
b_got_input = 1;
}
else if ( player actionslottwobuttonpressed() )
{
self.n_open_craftable_choice--;
b_got_input = 1;
}
if ( self.n_open_craftable_choice >= self.a_uts_open_craftables_available.size )
self.n_open_craftable_choice = 0;
else if ( self.n_open_craftable_choice < 0 )
self.n_open_craftable_choice = self.a_uts_open_craftables_available.size - 1;
if ( b_got_input )
{
self.equipname = self.a_uts_open_craftables_available[self.n_open_craftable_choice].equipname;
self.hint_string = self.a_uts_open_craftables_available[self.n_open_craftable_choice].hint_string;
self.playertrigger[n_playernum] sethintstring( self.hint_string );
b_got_input = 0;
}
wait 0.05;
}
self.b_open_craftable_checking_input = 0;
self.opencraftablehudelem[n_playernum] destroy();
self.opencraftablehudelem[n_playernum] = undefined;
}
craftable_use_hold_think_internal( player )
{
wait 0.01;
if ( !isdefined( self ) )
{
self notify( "craft_failed" );
if ( isdefined( player.craftableaudio ) )
{
player.craftableaudio delete();
player.craftableaudio = undefined;
}
return;
}
if ( !isdefined( self.usetime ) )
self.usetime = int( 3000 );
self.craft_time = self.usetime;
self.craft_start_time = gettime();
craft_time = self.craft_time;
craft_start_time = self.craft_start_time;
player disable_player_move_states( 1 );
player increment_is_drinking();
orgweapon = player getcurrentweapon();
player giveweapon( "zombie_builder_zm" );
player switchtoweapon( "zombie_builder_zm" );
self.stub.craftablespawn craftable_set_piece_crafting( player.current_craftable_piece );
player thread player_progress_bar( craft_start_time, craft_time );
if ( isdefined( level.craftable_craft_custom_func ) )
player thread [[ level.craftable_craft_custom_func ]]( self.stub );
while ( isdefined( self ) && player player_continue_crafting( self.stub.craftablespawn ) && gettime() - self.craft_start_time < self.craft_time )
wait 0.05;
player notify( "craftable_progress_end" );
if ( player hasWeapon( orgweapon ) )
{
player switchToWeapon( orgweapon );
}
else
{
player maps\mp\zombies\_zm_weapons::switch_back_primary_weapon( orgweapon );
}
player takeweapon( "zombie_builder_zm" );
if ( isdefined( player.is_drinking ) && player.is_drinking )
player decrement_is_drinking();
player enable_player_move_states();
if ( isdefined( self ) && player player_continue_crafting( self.stub.craftablespawn ) && gettime() - self.craft_start_time >= self.craft_time )
{
self.stub.craftablespawn craftable_clear_piece_crafting( player.current_craftable_piece );
self notify( "craft_succeed" );
}
else
{
if ( isdefined( player.craftableaudio ) )
{
player.craftableaudio delete();
player.craftableaudio = undefined;
}
self.stub.craftablespawn craftable_clear_piece_crafting( player.current_craftable_piece );
self notify( "craft_failed" );
}
}
player_progress_bar_update( start_time, craft_time )
{
self endon( "entering_last_stand" );
self endon( "death" );
self endon( "disconnect" );
self endon( "craftable_progress_end" );
self.usebar updatebar( 0.01, 1000 / craft_time );
while ( isdefined( self ) && gettime() - start_time < craft_time )
{
wait 0.05;
}
}
update_open_table_status()
{
thread update_open_table_status_actual();
}
update_open_table_status_actual()
{
wait 0.05; // wait for .crafted to be set
b_open_craftables_remaining = 0;
foreach ( uts_craftable in level.a_uts_craftables )
{
if ( is_true( uts_craftable.craftablestub.is_open_table ) && !is_true( uts_craftable.crafted ) && uts_craftable.craftablespawn.craftable_name != "open_table" && uts_craftable.craftablespawn craftable_can_use_shared_piece() )
{
b_open_craftables_remaining++;
}
}
if ( !b_open_craftables_remaining )
{
foreach ( uts_craftable in level.a_uts_craftables )
{
if ( uts_craftable.craftablespawn.craftable_name == "open_table" )
{
thread maps\mp\zombies\_zm_unitrigger::unregister_unitrigger( uts_craftable );
}
}
}
}