mirror of
https://github.com/JezuzLizard/BO2-Reimagined.git
synced 2025-06-08 22:31:36 -05:00
211 lines
5.9 KiB
Plaintext
211 lines
5.9 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);
|
|
}
|
|
}
|
|
}
|
|
} |