mirror of
https://github.com/JezuzLizard/BO2-Reimagined.git
synced 2025-07-02 10:00:27 -05:00
Melee weapons: add held weapon
Combat Knife: add model from BO2 MP Add melee wallbuy HUD icons to all maps Fix level.item_meat_name being undefined
This commit is contained in:
@ -118,7 +118,7 @@ chugabud_save_loadout()
|
||||
if (isdefined(self.loadout.equipment))
|
||||
self equipment_take(self.loadout.equipment);
|
||||
|
||||
self.loadout save_weapons_for_chugabud(self);
|
||||
self.loadout.melee_weapon = self get_player_melee_weapon();
|
||||
|
||||
if (self hasweapon("claymore_zm"))
|
||||
{
|
||||
@ -258,11 +258,10 @@ chugabud_give_loadout()
|
||||
if (loadout.current_weapon >= 0 && isdefined(loadout.weapons[loadout.current_weapon]["name"]))
|
||||
self switchtoweapon(loadout.weapons[loadout.current_weapon]["name"]);
|
||||
|
||||
self giveweapon("knife_zm");
|
||||
self.do_not_display_equipment_pickup_hint = 1;
|
||||
self maps\mp\zombies\_zm_equipment::equipment_give(self.loadout.equipment);
|
||||
self.do_not_display_equipment_pickup_hint = undefined;
|
||||
loadout restore_weapons_for_chugabud(self);
|
||||
self chugabud_restore_melee_weapon();
|
||||
self chugabud_restore_claymore();
|
||||
self.score = loadout.score;
|
||||
self.pers["score"] = loadout.score;
|
||||
@ -281,6 +280,14 @@ chugabud_give_loadout()
|
||||
self.loadout.weapons = undefined;
|
||||
}
|
||||
|
||||
chugabud_restore_melee_weapon()
|
||||
{
|
||||
self giveweapon( self.loadout.melee_weapon );
|
||||
self set_player_melee_weapon( self.loadout.melee_weapon );
|
||||
self giveweapon("held_" + self.loadout.melee_weapon);
|
||||
self setactionslot(2, "weapon", "held_" + self.loadout.melee_weapon);
|
||||
}
|
||||
|
||||
chugabud_give_perks()
|
||||
{
|
||||
loadout = self.loadout;
|
||||
|
@ -320,7 +320,10 @@ treasure_chest_think()
|
||||
if (is_player_valid(user))
|
||||
current_weapon = user getcurrentweapon();
|
||||
|
||||
if (grabber == user && is_player_valid(user) && !(user.is_drinking > 0) && !is_melee_weapon(current_weapon) && !is_placeable_mine(current_weapon) && !is_equipment(current_weapon) && level.revive_tool != current_weapon)
|
||||
primaries = user getweaponslistprimaries();
|
||||
weapon_limit = get_player_weapon_limit(user);
|
||||
|
||||
if (grabber == user && is_player_valid(user) && !(user.is_drinking > 0) && level.revive_tool != current_weapon && (primaries.size < weapon_limit || (!is_melee_weapon(current_weapon) && !is_placeable_mine(current_weapon) && !is_equipment(current_weapon))))
|
||||
{
|
||||
bbprint("zombie_uses", "playername %s playerscore %d round %d cost %d name %s x %f y %f z %f type %s", user.name, user.score, level.round_number, self.zombie_cost, self.zbarrier.weapon_string, self.origin, "magic_accept");
|
||||
self notify("user_grabbed_weapon");
|
||||
@ -858,10 +861,24 @@ decide_hide_show_hint(endon_notify, second_endon_notify, onlyplayer)
|
||||
|
||||
if (isdefined(self.chest_user) && !isdefined(self.box_rerespun))
|
||||
{
|
||||
if (is_melee_weapon(self.chest_user getcurrentweapon()) || is_placeable_mine(self.chest_user getcurrentweapon()) || self.chest_user hacker_active())
|
||||
self setinvisibletoplayer(self.chest_user);
|
||||
else
|
||||
primaries = self.chest_user getweaponslistprimaries();
|
||||
weapon_limit = get_player_weapon_limit(self.chest_user);
|
||||
|
||||
if (primaries.size < weapon_limit)
|
||||
{
|
||||
self setvisibletoplayer(self.chest_user);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (is_melee_weapon(self.chest_user getcurrentweapon()) || is_placeable_mine(self.chest_user getcurrentweapon()) || self.chest_user hacker_active())
|
||||
{
|
||||
self setinvisibletoplayer(self.chest_user);
|
||||
}
|
||||
else
|
||||
{
|
||||
self setvisibletoplayer(self.chest_user);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (isdefined(onlyplayer))
|
||||
{
|
||||
@ -905,8 +922,20 @@ trigger_visible_to_player(player)
|
||||
|
||||
if (isdefined(self.stub.trigger_target.chest_user) && !isdefined(self.stub.trigger_target.box_rerespun))
|
||||
{
|
||||
if (player != self.stub.trigger_target.chest_user || is_melee_weapon(self.stub.trigger_target.chest_user getcurrentweapon()) || is_placeable_mine(self.stub.trigger_target.chest_user getcurrentweapon()) || self.stub.trigger_target.chest_user hacker_active())
|
||||
if (player != self.stub.trigger_target.chest_user || self.stub.trigger_target.chest_user hacker_active())
|
||||
{
|
||||
visible = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
primaries = self.stub.trigger_target.chest_user getweaponslistprimaries();
|
||||
weapon_limt = get_player_weapon_limit(self.stub.trigger_target.chest_user);
|
||||
|
||||
if (primaries.size >= weapon_limt && (is_melee_weapon(self.stub.trigger_target.chest_user getcurrentweapon()) || is_placeable_mine(self.stub.trigger_target.chest_user getcurrentweapon())))
|
||||
{
|
||||
visible = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -944,7 +973,10 @@ can_buy_weapon()
|
||||
|
||||
current_weapon = self getcurrentweapon();
|
||||
|
||||
if (is_melee_weapon(current_weapon) || is_placeable_mine(current_weapon) || is_equipment_that_blocks_purchase(current_weapon))
|
||||
primaries = self getweaponslistprimaries();
|
||||
weapon_limt = get_player_weapon_limit(self);
|
||||
|
||||
if (primaries.size >= weapon_limt && (is_melee_weapon(current_weapon) || is_placeable_mine(current_weapon) || is_equipment_that_blocks_purchase(current_weapon)))
|
||||
return false;
|
||||
|
||||
if (self in_revive_trigger())
|
||||
|
@ -4,6 +4,95 @@
|
||||
#include maps\mp\zombies\_zm_utility;
|
||||
#include maps\mp\zombies\_zm_weapons;
|
||||
|
||||
init( weapon_name, flourish_weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name, cost, wallbuy_targetname, hint_string, vo_dialog_id, flourish_fn )
|
||||
{
|
||||
precacheitem( weapon_name );
|
||||
precacheitem( flourish_weapon_name );
|
||||
precacheitem( "held_" + weapon_name );
|
||||
add_melee_weapon( weapon_name, flourish_weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name, cost, wallbuy_targetname, hint_string, vo_dialog_id, flourish_fn );
|
||||
melee_weapon_triggers = getentarray( wallbuy_targetname, "targetname" );
|
||||
|
||||
for ( i = 0; i < melee_weapon_triggers.size; i++ )
|
||||
{
|
||||
knife_model = getent( melee_weapon_triggers[i].target, "targetname" );
|
||||
|
||||
if ( isdefined( knife_model ) )
|
||||
knife_model hide();
|
||||
|
||||
melee_weapon_triggers[i] thread melee_weapon_think( weapon_name, cost, flourish_fn, vo_dialog_id, flourish_weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name );
|
||||
|
||||
if ( !( isdefined( level.monolingustic_prompt_format ) && level.monolingustic_prompt_format ) )
|
||||
{
|
||||
melee_weapon_triggers[i] sethintstring( hint_string, cost );
|
||||
|
||||
cursor_hint = "HINT_WEAPON";
|
||||
cursor_hint_weapon = weapon_name;
|
||||
melee_weapon_triggers[i] setcursorhint( cursor_hint, cursor_hint_weapon );
|
||||
}
|
||||
else
|
||||
{
|
||||
weapon_display = get_weapon_display_name( weapon_name );
|
||||
hint_string = &"ZOMBIE_WEAPONCOSTONLY";
|
||||
melee_weapon_triggers[i] sethintstring( hint_string, weapon_display, cost );
|
||||
|
||||
cursor_hint = "HINT_WEAPON";
|
||||
cursor_hint_weapon = weapon_name;
|
||||
melee_weapon_triggers[i] setcursorhint( cursor_hint, cursor_hint_weapon );
|
||||
}
|
||||
|
||||
melee_weapon_triggers[i] usetriggerrequirelookat();
|
||||
}
|
||||
|
||||
melee_weapon_structs = getstructarray( wallbuy_targetname, "targetname" );
|
||||
|
||||
for ( i = 0; i < melee_weapon_structs.size; i++ )
|
||||
prepare_stub( melee_weapon_structs[i].trigger_stub, weapon_name, flourish_weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name, cost, wallbuy_targetname, hint_string, vo_dialog_id, flourish_fn );
|
||||
|
||||
register_melee_weapon_for_level( weapon_name );
|
||||
|
||||
if ( !isdefined( level.ballistic_weapon_name ) )
|
||||
level.ballistic_weapon_name = [];
|
||||
|
||||
level.ballistic_weapon_name[weapon_name] = ballistic_weapon_name;
|
||||
|
||||
if ( !isdefined( level.ballistic_upgraded_weapon_name ) )
|
||||
level.ballistic_upgraded_weapon_name = [];
|
||||
|
||||
level.ballistic_upgraded_weapon_name[weapon_name] = ballistic_upgraded_weapon_name;
|
||||
}
|
||||
|
||||
prepare_stub( stub, weapon_name, flourish_weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name, cost, wallbuy_targetname, hint_string, vo_dialog_id, flourish_fn )
|
||||
{
|
||||
if ( isdefined( stub ) )
|
||||
{
|
||||
if ( !( isdefined( level.monolingustic_prompt_format ) && level.monolingustic_prompt_format ) )
|
||||
{
|
||||
stub.hint_string = hint_string;
|
||||
|
||||
stub.cursor_hint = "HINT_WEAPON";
|
||||
stub.cursor_hint_weapon = weapon_name;
|
||||
}
|
||||
else
|
||||
{
|
||||
stub.hint_parm1 = get_weapon_display_name( weapon_name );
|
||||
stub.hint_parm2 = cost;
|
||||
stub.hint_string = &"ZOMBIE_WEAPONCOSTONLY";
|
||||
|
||||
stub.cursor_hint = "HINT_WEAPON";
|
||||
stub.cursor_hint_weapon = weapon_name;
|
||||
}
|
||||
|
||||
stub.cost = cost;
|
||||
stub.weapon_name = weapon_name;
|
||||
stub.vo_dialog_id = vo_dialog_id;
|
||||
stub.flourish_weapon_name = flourish_weapon_name;
|
||||
stub.ballistic_weapon_name = ballistic_weapon_name;
|
||||
stub.ballistic_upgraded_weapon_name = ballistic_upgraded_weapon_name;
|
||||
stub.trigger_func = ::melee_weapon_think;
|
||||
stub.flourish_fn = flourish_fn;
|
||||
}
|
||||
}
|
||||
|
||||
change_melee_weapon(weapon_name, current_weapon)
|
||||
{
|
||||
current_melee_weapon = self get_player_melee_weapon();
|
||||
@ -82,6 +171,9 @@ change_melee_weapon(weapon_name, current_weapon)
|
||||
self seteverhadweaponall(1);
|
||||
}
|
||||
|
||||
self giveweapon("held_" + weapon_name);
|
||||
self setactionslot(2, "weapon", "held_" + weapon_name);
|
||||
|
||||
return current_weapon;
|
||||
}
|
||||
|
||||
@ -145,7 +237,7 @@ do_melee_weapon_flourish_end(gun, flourish_weapon_name, weapon_name, ballistic_w
|
||||
}
|
||||
else if (is_melee_weapon(gun))
|
||||
{
|
||||
self switchtoweapon(weapon_name);
|
||||
self switchtoweapon("held_" + weapon_name);
|
||||
self decrement_is_drinking();
|
||||
return;
|
||||
}
|
||||
|
@ -1284,7 +1284,10 @@ wait_for_player_to_take(player, weapon, packa_timer, upgrade_as_attachment)
|
||||
player maps\mp\zombies\_zm_stats::increment_player_stat("pap_weapon_grabbed");
|
||||
current_weapon = player getcurrentweapon();
|
||||
|
||||
if (is_player_valid(player) && !(player.is_drinking > 0) && !is_melee_weapon(current_weapon) && !is_placeable_mine(current_weapon) && !is_equipment(current_weapon) && level.revive_tool != current_weapon && "none" != current_weapon && !player hacker_active())
|
||||
primaries = player getweaponslistprimaries();
|
||||
weapon_limit = get_player_weapon_limit(player);
|
||||
|
||||
if (is_player_valid(player) && !(player.is_drinking > 0) && level.revive_tool != current_weapon && "none" != current_weapon && !player hacker_active() && (primaries.size < weapon_limit || (!is_melee_weapon(current_weapon) && !is_placeable_mine(current_weapon) && !is_equipment(current_weapon))))
|
||||
{
|
||||
maps\mp\_demo::bookmark("zm_player_grabbed_packapunch", gettime(), player);
|
||||
self notify("pap_taken");
|
||||
|
@ -418,6 +418,69 @@ head_should_gib(attacker, type, point)
|
||||
return 1;
|
||||
}
|
||||
|
||||
zombie_death_animscript()
|
||||
{
|
||||
team = undefined;
|
||||
recalc_zombie_array();
|
||||
|
||||
if ( isdefined( self._race_team ) )
|
||||
team = self._race_team;
|
||||
|
||||
self reset_attack_spot();
|
||||
|
||||
if ( self check_zombie_death_animscript_callbacks() )
|
||||
return false;
|
||||
|
||||
if ( isdefined( level.zombie_death_animscript_override ) )
|
||||
self [[ level.zombie_death_animscript_override ]]();
|
||||
|
||||
if ( self.has_legs && isdefined( self.a.gib_ref ) && self.a.gib_ref == "no_legs" )
|
||||
self.deathanim = "zm_death";
|
||||
|
||||
self.grenadeammo = 0;
|
||||
|
||||
if ( isdefined( self.nuked ) )
|
||||
{
|
||||
if ( zombie_can_drop_powerups( self ) )
|
||||
{
|
||||
if ( isdefined( self.in_the_ground ) && self.in_the_ground == 1 )
|
||||
{
|
||||
trace = bullettrace( self.origin + vectorscale( ( 0, 0, 1 ), 100.0 ), self.origin + vectorscale( ( 0, 0, -1 ), 100.0 ), 0, undefined );
|
||||
origin = trace["position"];
|
||||
level thread zombie_delay_powerup_drop( origin );
|
||||
}
|
||||
else
|
||||
{
|
||||
trace = groundtrace( self.origin + vectorscale( ( 0, 0, 1 ), 5.0 ), self.origin + vectorscale( ( 0, 0, -1 ), 300.0 ), 0, undefined );
|
||||
origin = trace["position"];
|
||||
level thread zombie_delay_powerup_drop( self.origin );
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
level zombie_death_points( self.origin, self.damagemod, self.damagelocation, self.attacker, self, team );
|
||||
|
||||
if ( isdefined( self.attacker ) && isai( self.attacker ) )
|
||||
self.attacker notify( "killed", self );
|
||||
|
||||
if ( "rottweil72_upgraded_zm" == self.damageweapon && "MOD_RIFLE_BULLET" == self.damagemod )
|
||||
self thread dragons_breath_flame_death_fx();
|
||||
|
||||
if ( issubstr( self.damageweapon, "tazer_knuckles_zm" ) && "MOD_MELEE" == self.damagemod )
|
||||
{
|
||||
self.is_on_fire = 0;
|
||||
self notify( "stop_flame_damage" );
|
||||
}
|
||||
|
||||
if ( self.damagemod == "MOD_BURNED" )
|
||||
self thread maps\mp\animscripts\zm_death::flame_death_fx();
|
||||
|
||||
if ( self.damagemod == "MOD_GRENADE" || self.damagemod == "MOD_GRENADE_SPLASH" )
|
||||
level notify( "zombie_grenade_death", self.origin );
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
zombie_can_drop_powerups(zombie)
|
||||
{
|
||||
if (!flag("zombie_drop_powerups"))
|
||||
|
@ -19,6 +19,26 @@ init_player_offhand_weapons()
|
||||
init_player_equipment();
|
||||
}
|
||||
|
||||
give_start_weapon( switch_to_weapon )
|
||||
{
|
||||
if ( !self hasweapon( level.zombie_melee_weapon_player_init ) )
|
||||
{
|
||||
self giveweapon( level.zombie_melee_weapon_player_init );
|
||||
}
|
||||
|
||||
if ( !self hasweapon( "held_" + level.zombie_melee_weapon_player_init ) )
|
||||
{
|
||||
self giveweapon( "held_" + level.zombie_melee_weapon_player_init );
|
||||
self setactionslot( 2, "weapon", "held_" + level.zombie_melee_weapon_player_init );
|
||||
}
|
||||
|
||||
self giveweapon( level.start_weapon );
|
||||
self givestartammo( level.start_weapon );
|
||||
|
||||
if ( isdefined( switch_to_weapon ) && switch_to_weapon )
|
||||
self switchtoweapon( level.start_weapon );
|
||||
}
|
||||
|
||||
is_headshot(sweapon, shitloc, smeansofdeath)
|
||||
{
|
||||
if (smeansofdeath == "MOD_MELEE" || smeansofdeath == "MOD_BAYONET" || smeansofdeath == "MOD_IMPACT" || smeansofdeath == "MOD_UNKNOWN" || smeansofdeath == "MOD_IMPACT")
|
||||
|
@ -865,4 +865,9 @@ createballisticknifewatcher_zm(name, weapon)
|
||||
watcher.onspawnretrievetriggers = maps\mp\zombies\_zm_weap_ballistic_knife::on_spawn_retrieve_trigger;
|
||||
watcher.storedifferentobject = 1;
|
||||
watcher.headicon = 0;
|
||||
}
|
||||
|
||||
give_fallback_weapon()
|
||||
{
|
||||
self switchtoweapon( "held_" + self get_player_melee_weapon() );
|
||||
}
|
@ -287,16 +287,8 @@ wallbuy(weapon_name, target, targetname, origin, angles, play_chalk_fx = 1)
|
||||
unitrigger_stub.vo_dialog_id = melee_weapon.vo_dialog_id;
|
||||
unitrigger_stub.flourish_fn = melee_weapon.flourish_fn;
|
||||
|
||||
if (is_true(level.disable_melee_wallbuy_icons))
|
||||
{
|
||||
unitrigger_stub.cursor_hint = "HINT_NOICON";
|
||||
unitrigger_stub.cursor_hint_weapon = undefined;
|
||||
}
|
||||
else
|
||||
{
|
||||
unitrigger_stub.cursor_hint = "HINT_WEAPON";
|
||||
unitrigger_stub.cursor_hint_weapon = melee_weapon.weapon_name;
|
||||
}
|
||||
unitrigger_stub.cursor_hint = "HINT_WEAPON";
|
||||
unitrigger_stub.cursor_hint_weapon = melee_weapon.weapon_name;
|
||||
}
|
||||
|
||||
if (weapon_name == "tazer_knuckles_zm")
|
||||
|
Reference in New Issue
Block a user