diff --git a/README.md b/README.md index 7e7c9e51..ee718a23 100644 --- a/README.md +++ b/README.md @@ -162,7 +162,7 @@ * Upgraded: decreased last stand ammo from 2 clips to 1 clip ### Tac-45 -* Replaces M1911 on Tranzit, Nuketown, Die Rise, and Buried +* Replaces M1911 (except on Mob of the Dead) ## Assault Rifles @@ -361,7 +361,7 @@ * Zombies that are in the ground can no longer get EMP'd ### Smoke Grenade -* Added on Cell Block and Docks +* Added on Mob of the Dead * Kills on any round ### Hell's Retriever diff --git a/scripts/zm/_zm_reimagined.gsc b/scripts/zm/_zm_reimagined.gsc index 4bd121b4..693c2fba 100644 --- a/scripts/zm/_zm_reimagined.gsc +++ b/scripts/zm/_zm_reimagined.gsc @@ -1641,6 +1641,10 @@ weapon_changes() include_weapon( "held_spork_zm_alcatraz", 0 ); register_melee_weapon_for_level( "held_spork_zm_alcatraz" ); + + maps\mp\zombies\_zm_weapons::register_zombie_weapon_callback( "willy_pete_zm", ::player_give_willy_pete ); + register_tactical_grenade_for_level("willy_pete_zm"); + level.zombie_weapons["willy_pete_zm"].is_in_box = 1; } if (level.script == "zm_tomb") @@ -1665,6 +1669,17 @@ weapon_changes() } } +player_give_willy_pete() +{ + self endon("disconnect"); + + self setclientfieldtoplayer("tomahawk_in_use", 0); + + wait 0.05; + + self giveweapon("willy_pete_zm"); +} + wallbuy_location_changes() { if (!is_classic()) diff --git a/scripts/zm/replaced/_zm_afterlife.gsc b/scripts/zm/replaced/_zm_afterlife.gsc index a114f771..3e8942a8 100644 --- a/scripts/zm/replaced/_zm_afterlife.gsc +++ b/scripts/zm/replaced/_zm_afterlife.gsc @@ -613,6 +613,74 @@ afterlife_player_damage_callback(einflictor, eattacker, idamage, idflags, smeans return idamage; } +afterlife_save_loadout() +{ + primaries = self getweaponslistprimaries(); + currentweapon = self getcurrentweapon(); + self.loadout = spawnstruct(); + self.loadout.player = self; + self.loadout.weapons = []; + self.loadout.score = self.score; + self.loadout.current_weapon = 0; + + foreach ( index, weapon in primaries ) + { + self.loadout.weapons[index] = weapon; + self.loadout.stockcount[index] = self getweaponammostock( weapon ); + self.loadout.clipcount[index] = self getweaponammoclip( weapon ); + + if ( weaponisdualwield( weapon ) ) + { + weapon_dw = weapondualwieldweaponname( weapon ); + self.loadout.clipcount2[index] = self getweaponammoclip( weapon_dw ); + } + + weapon_alt = weaponaltweaponname( weapon ); + + if ( weapon_alt != "none" ) + { + self.loadout.stockcountalt[index] = self getweaponammostock( weapon_alt ); + self.loadout.clipcountalt[index] = self getweaponammoclip( weapon_alt ); + } + + if ( weapon == currentweapon ) + self.loadout.current_weapon = index; + } + + self.loadout.equipment = self get_player_equipment(); + + if ( isdefined( self.loadout.equipment ) ) + self equipment_take( self.loadout.equipment ); + + if ( self hasweapon( "claymore_zm" ) ) + { + self.loadout.hasclaymore = 1; + self.loadout.claymoreclip = self getweaponammoclip( "claymore_zm" ); + } + + if ( self hasweapon( "bouncing_tomahawk_zm" ) || self hasweapon( "upgraded_tomahawk_zm" ) ) + { + self.loadout.hastomahawk = 1; + self setclientfieldtoplayer( "tomahawk_in_use", 0 ); + } + else if ( self hasweapon( "willy_pete_zm" ) ) + { + self.loadout.hassmoke = 1; + self.loadout.smokeclip = self getweaponammoclip( "willy_pete_zm" ); + } + + self.loadout.perks = afterlife_save_perks( self ); + lethal_grenade = self get_player_lethal_grenade(); + + if ( self hasweapon( lethal_grenade ) ) + self.loadout.grenade = self getweaponammoclip( lethal_grenade ); + else + self.loadout.grenade = 0; + + self.loadout.lethal_grenade = lethal_grenade; + self set_player_lethal_grenade( undefined ); +} + afterlife_give_loadout() { self takeallweapons(); @@ -681,18 +749,17 @@ afterlife_give_loadout() self setweaponammoclip("claymore_zm", loadout.claymoreclip); } - if (isdefined(loadout.hasemp) && loadout.hasemp) - { - self giveweapon("emp_grenade_zm"); - self setweaponammoclip("emp_grenade_zm", loadout.empclip); - } - if (isdefined(loadout.hastomahawk) && loadout.hastomahawk) { self giveweapon(self.current_tomahawk_weapon); self set_player_tactical_grenade(self.current_tomahawk_weapon); self setclientfieldtoplayer("tomahawk_in_use", 1); } + else if (isdefined(loadout.hassmoke) && loadout.hassmoke) + { + self giveweapon("willy_pete_zm"); + self setweaponammoclip("willy_pete_zm", loadout.smokeclip); + } self.score = loadout.score; perk_array = maps\mp\zombies\_zm_perks::get_perk_array(1); diff --git a/scripts/zm/replaced/_zm_weap_tomahawk.gsc b/scripts/zm/replaced/_zm_weap_tomahawk.gsc index 35ae5bf1..2dfe7e1d 100644 --- a/scripts/zm/replaced/_zm_weap_tomahawk.gsc +++ b/scripts/zm/replaced/_zm_weap_tomahawk.gsc @@ -130,15 +130,26 @@ tomahawk_return_player(m_tomahawk, num_zombie_hit = 5) } m_tomahawk delete(); - self playsoundtoplayer("wpn_tomahawk_catch_plr", self); - self playsound("wpn_tomahawk_catch_npc"); + + if (self.current_tactical_grenade == self.current_tomahawk_weapon) + { + self playsoundtoplayer("wpn_tomahawk_catch_plr", self); + self playsound("wpn_tomahawk_catch_npc"); + } + wait 5; - self playsoundtoplayer("wpn_tomahawk_cooldown_done", self); - self givemaxammo(self.current_tomahawk_weapon); + + if (self.current_tactical_grenade == self.current_tomahawk_weapon) + { + self playsoundtoplayer("wpn_tomahawk_cooldown_done", self); + self givemaxammo(self.current_tomahawk_weapon); + self setclientfieldtoplayer("tomahawk_in_use", 3); + } + a_zombies = getaispeciesarray("axis", "all"); foreach (ai_zombie in a_zombies) + { ai_zombie.hit_by_tomahawk = 0; - - self setclientfieldtoplayer("tomahawk_in_use", 3); + } } \ No newline at end of file diff --git a/scripts/zm/zgrief/zgrief_reimagined.gsc b/scripts/zm/zgrief/zgrief_reimagined.gsc index 54f775d7..53a91410 100644 --- a/scripts/zm/zgrief/zgrief_reimagined.gsc +++ b/scripts/zm/zgrief/zgrief_reimagined.gsc @@ -371,12 +371,6 @@ set_grief_vars() level.zombie_weapons["raygun_mark2_zm"].is_in_box = 1; } - if (isDefined(level.zombie_weapons["willy_pete_zm"])) - { - register_tactical_grenade_for_level("willy_pete_zm"); - level.zombie_weapons["willy_pete_zm"].is_in_box = 1; - } - level.grief_score = []; level.grief_score["A"] = 0; level.grief_score["B"] = 0;