• Welcome Guest, The new Modme forums are here! Please visit here for all recommended information.

Released Bo4 Perk Pack [updated for blood wolf bite]

These are 11 of the 12 new bo4 perks available for mappers
270
CREDITS:
Treyarch / Activision
raptroes
Joshwoocool
Quentin
M5_Prodigy
DTZxPorter
Scobalula
NGcaudle

Please credit these people if you use these perks, as well as myself
please DO NOT re upload without permission
271272273274275276


before we begin you will need to set up the UI for the perk icons, you will need this even if you only use 1 perk from this pack

if you already have a UI set up for perk icons please use this, if not skip to next step

open up your "t7hud_zm_custom.lua" file (located MAPNAME\ui\uieditor\menus\hud)
under

electric_cherry = "specialty_blue_electric_cherry_zombies",
place
Code:
            bloodwolf = "i_specialty_bloodwolf_zombies",
            perception = "i_specialty_perception_zombies",
            winterwail = "i_specialty_winterwail_zombies",
            razor = "i_specialty_razor_zombies",
            bandolier = "i_specialty_bandolier_zombies",
            blazephase = "i_specialty_blazephase_zombies",
            stronghold = "i_specialty_stronghold_zombies",
            victorious = "i_specialty_victorious_zombies",
            zombshell = "i_specialty_zombshell_zombies",
            slider = "i_specialty_slider_zombies",
            dyingwish = "i_specialty_dyingwish_zombies",
            timeslip = "i_specialty_timeslip_zombies"
save and close, your done

If you DO NOT have this file, download this and place it in your MAPNAME folder:
now open up your MAPNAME.zone file and put this in there

Code:
rawfile,ui/uieditor/menus/hud/t7hud_zm_custom.lua
rawfile,ui/uieditor/widgets/hud/customperksfactory.luac
now open your MAPNAME.csc file and ABOVE
Code:
    zm_usermap::main();
place

Code:
    luiLoad( "ui.uieditor.menus.hud.t7hud_zm_custom" );
that should be it, now on to the perks!



BANDOLIER BANDIT
EFFECT: Extra ammo for all weapons, extra ammo appears under ammo on hud
DOWNLOAD: https://mega.nz/#!7YIhlY7T!jcu3KwlviLH6Pv-ecdhENghKC2wCjS9y5W0KaFF1ZS4
INSTALL INSTRUCTIONS:

place all files where they should go from your download
open up your MAPNAME.gsc and place this UNDER
#using scripts\zm\_zm_perk_staminup;
place:
Code:
#using scripts\zm\_zm_perk_bandolier_bandit;
do the same in your MAPNAME.csc file

now in your mapname.zone add this at the bottom:
Code:
weapon,zombie_perk_bottle_bandolier_bandit
image,i_specialty_bandolier_zombies
scriptparsetree,scripts/zm/_zm_perk_bandolier_bandit.gsc
scriptparsetree,scripts/zm/_zm_perk_bandolier_bandit.csc
scriptparsetree,scripts/zm/_zm_perk_bandolier_bandit.gsh
scriptparsetree,scripts/zm/_zm_weapons.gsc
xmodel,cz_zombie_vending_bandolier


BLAZE PHASE
EFFECT: Crouching causes a charge up of fire, standing releases it and flings you forward igniting zombies
DOWNLOAD: https://mega.nz/#!nBJwyQDK!eFPA5e_9eaSEJhk_8QRS_wWnVE9FDW8sB-t_i31vD7s
INSTALL INSTRUCTIONS:

place all files where they should go from your download
open up your MAPNAME.gsc and place this UNDER
#using scripts\zm\_zm_perk_staminup;
place:
Code:
#using scripts\zm\_zm_perk_blaze_phase;
do the same in your MAPNAME.csc file

now in your mapname.zone add this at the bottom:
Code:
weapon,zombie_perk_bottle_blaze_phase
image,i_specialty_blazephase_zombies
scriptparsetree,scripts/zm/_zm_perk_blaze_phase.gsc
scriptparsetree,scripts/zm/_zm_perk_blaze_phase.csc
scriptparsetree,scripts/zm/_zm_perk_blaze_phase.gsh
xmodel,cz_zombie_vending_blaze_phase




DYING WISH
EFFECT: Negates dying for nine seconds leaving you on 1 health with a 5 minute cooldown. during invicibility melee hits instant kill basic zombies
DOWNLOAD: https://mega.nz/#!eMAWHIKb!JBLgGodyhHF_xaEq1-lpwbN9aSQvLZXHsb58YlWGsnw
INSTALL INSTRUCTIONS:

place all files where they should go from your download
open up your MAPNAME.gsc and place this UNDER
#using scripts\zm\_zm_perk_staminup;
place:
Code:
#using scripts\zm\_zm_perk_dying_wish;
do the same in your MAPNAME.csc file

now in your mapname.zone add this at the bottom:
Code:
weapon,zombie_perk_bottle_dying_wish
scriptparsetree,scripts/zm/_zm_perk_dying_wish.gsc
scriptparsetree,scripts/zm/_zm_perk_dying_wish.csc
scriptparsetree,scripts/zm/_zm_perk_dying_wish.gsh
image,i_specialty_dyingwish_zombies
xmodel,cz_vending_dying_wish




ETHEREAL RAZOR
EFFECT: melee can affect multiple zombies and greatly increases damage and melee attacks heal
DOWNLOAD: https://mega.nz/#!yYBAgQxL!p9UET3JPXajYfYtmyrfHavocqs85pF1u4FyWxmA86Yc
INSTALL INSTRUCTIONS:

place all files where they should go from your download
open up your MAPNAME.gsc and place this UNDER
#using scripts\zm\_zm_perk_staminup;
place:
Code:
#using scripts\zm\_zm_perk_ethereal_razor;
do the same in your MAPNAME.csc file

now in your mapname.zone add this at the bottom:
Code:
weapon,zombie_perk_bottle_ethereal_razor
image,i_specialty_razor_zombies
scriptparsetree,scripts/zm/_zm_perk_ethereal_razor.gsc
scriptparsetree,scripts/zm/_zm_perk_ethereal_razor.csc
scriptparsetree,scripts/zm/_zm_perk_ethereal_razor.gsh
xmodel,cz_vending_razor
fx,reaps_cz_ethereal_razor/fx_knife_trail_razor_zmb
fx,reaps_cz_ethereal_razor/fx_flesh_hit_knife_razor_zmb
weapon,knife_razor_zm




PHD SLIDER
EFFECT: sliding Into zombies causes explosions, imune to explosive damage
DOWNLOAD: https://mega.nz/#!fMIA2QjI!3e0x420OYBRvB8g02PEAk6SxEOQ5nS5VUZrZC776oIc
INSTALL INSTRUCTIONS:

place all files where they should go from your download
open up your MAPNAME.gsc and place this UNDER
#using scripts\zm\_zm_perk_staminup;
place:
Code:
#using scripts\zm\_zm_perk_phd_slider;
do the same in your MAPNAME.csc file

now in your mapname.zone add this at the bottom:
Code:
weapon,zombie_perk_bottle_phd_slider
image,i_specialty_slider_zombies
scriptparsetree,scripts/zm/_zm_perk_phd_slider.gsc
scriptparsetree,scripts/zm/_zm_perk_phd_slider.csc
scriptparsetree,scripts/zm/_zm_perk_phd_slider.gsh
scriptparsetree,scripts/zm/_zm_weap_thundergun.gsc
scriptparsetree,scripts/zm/_zm_weap_thundergun.csc
scriptparsetree,scripts/zm/_zm_weap_thundergun.gsh
fx,zombie/fx_aat_blast_furnace_zmb
fx,zombie/fx_bgb_burned_out_fire_torso_zmb
xmodel,cz_vending_slider




STONE COLD STRONGHOLD
EFFECT: Standing Still Forms A Ring Around You Generating Armour Over Time
DOWNLOAD: https://mega.nz/#!3MBS0QRL!-9BL-nhaafgg4yESiohT8voDvn5nHtrArGKHtL0-SMk
INSTALL INSTRUCTIONS:

place all files where they should go from your download
open up your MAPNAME.gsc and place this UNDER
#using scripts\zm\_zm_perk_staminup;
place:
Code:
#using scripts\zm\_zm_perk_stone_cold_stronghold;
do the same in your MAPNAME.csc file

now in your mapname.zone add this at the bottom:
Code:
weapon,zombie_perk_bottle_stone_cold_stronghold
scriptparsetree,scripts/zm/_zm_perk_stone_cold_stronghold.gsc
scriptparsetree,scripts/zm/_zm_perk_stone_cold_stronghold.csc
scriptparsetree,scripts/zm/_zm_perk_stone_cold_stronghold.gsh
fx,reaps_cz_stone_cold_stronghold/stonecold
image,i_specialty_stronghold_zombies
xmodel,cz_zombie_vending_stronghold




TIMESLIP
EFFECT: Speeds Up Mystery Box Randomising and Pap Speed
DOWNLOAD: https://mega.nz/#!jJYGlS4I!pRayQlNWjMnMSIJlk5vqhztBx7hYdCWBJplI46Di0e4
INSTALL INSTRUCTIONS:

place all files where they should go from your download
open up your MAPNAME.gsc and place this UNDER
#using scripts\zm\_zm_perk_staminup;
place:
Code:
#using scripts\zm\_zm_perk_timeslip;
do the same in your MAPNAME.csc file

now in your mapname.zone add this at the bottom:
Code:
weapon,zombie_perk_bottle_timeslip
image,i_specialty_timeslip_zombies
scriptparsetree,scripts/zm/_zm_perk_timeslip.gsc
scriptparsetree,scripts/zm/_zm_perk_timeslip.csc
scriptparsetree,scripts/zm/_zm_perk_timeslip.gsh
scriptparsetree,scripts/zm/_zm_magicbox.gsc
scriptparsetree,scripts/zm/_zm_pack_a_punch.gsc
scriptparsetree,scripts/zm/_zm_hero_weapon.gsc
xmodel,cz_vending_timeslip




VICTORIOUS TORTOISE
EFFECT: Shield Blocks Damage From All Directions When Held And Explodes When Destroyed
DOWNLOAD: https://mega.nz/#!XdZwBCZa!VnpYfSGl6tvA43JshEDvG4Fr8URimOJ5ngJDAxPkXV0
INSTALL INSTRUCTIONS:

place all files where they should go from your download
open up your MAPNAME.gsc and place this UNDER
#using scripts\zm\_zm_perk_staminup;
place:
Code:
#using scripts\zm\_zm_perk_victorious_tortoise;
do the same in your MAPNAME.csc file

now in your mapname.zone add this at the bottom:
Code:
weapon,zombie_perk_bottle_victorious_tortoise
scriptparsetree,scripts/zm/_zm_perk_victorious_tortoise.gsc
scriptparsetree,scripts/zm/_zm_perk_victorious_tortoise.csc
scriptparsetree,scripts/zm/_zm_perk_victorious_tortoise.gsh
scriptparsetree,scripts/zm/_zm_weap_riotshield.gsc
image,i_specialty_victorious_zombies
xmodel,cz_vending_victorious




WINTERS WAIL
EFFECT: getting hurt causes nearby zombies to slow and freeze, 3 uses
DOWNLOAD: https://mega.nz/#!TYACEYba!b3wqilAPmg1_agspCbvAJUxxs66IXXsxSD05ev1eskw
INSTALL INSTRUCTIONS:

place all files where they should go from your download
open up your MAPNAME.gsc and place this UNDER
#using scripts\zm\_zm_perk_staminup;
place:
Code:
#using scripts\zm\_zm_perk_winters_wail;
do the same in your MAPNAME.csc file

now in your mapname.zone add this at the bottom:
Code:
weapon,zombie_perk_bottle_winters_wail
image,i_specialty_winterwail_zombies
scriptparsetree,scripts/zm/_zm_perk_winters_wail.gsc
scriptparsetree,scripts/zm/_zm_perk_winters_wail.csc
scriptparsetree,scripts/zm/_zm_perk_winters_wail.gsh
fx,reaps_cz_winters_wail/winters_wail_blast
fx,reaps_cz_winters_wail/winters_wail_zombie
xmodel,cz_zombie_vending_winterswail
material,winterwail_hud_snowflake





ZOMBSHELL
EFFECT: Shooting A Zombie can Create A Slow Down Field, also makes them less resistant to damage
DOWNLOAD: https://mega.nz/#!iUBUlCJa!gvxF8taN1DxOhiAHU60tDR2bQpgNUBhBcWyhouhFFzg
INSTALL INSTRUCTIONS:

place all files where they should go from your download
open up your MAPNAME.gsc and place this UNDER
#using scripts\zm\_zm_perk_staminup;
place:
Code:
#using scripts\zm\_zm_perk_zombshell;
do the same in your MAPNAME.csc file

now in your mapname.zone add this at the bottom:
Code:
weapon,zombie_perk_bottle_zombshell
scriptparsetree,scripts/zm/_zm_perk_zombshell.gsc
scriptparsetree,scripts/zm/_zm_perk_zombshell.csc
scriptparsetree,scripts/zm/_zm_perk_zombshell.gsh
image,i_specialty_zombshell_zombies
fx,reaps_cz_zombshell/zombshell
xmodel,cz_vending_zombshell



BLOOD WOLF BITE
EFFECT: Dealing a large amount of damage in a short amount of time spawns a friendly wolf to attack zombies
DOWNLOAD: https://mega.nz/#!3EpmECoQ!bUKIQq1AsZFWGRHbK7Q_zwEJFxeMIWIPddNsYG5eWJw
INSTALL INSTRUCTIONS:

place all files where they should go from your download
open up your MAPNAME.gsc and place this UNDER
#using scripts\zm\_zm_perk_staminup;
place:
Code:
#using scripts\zm\_zm_perk_blood_wolf_bite;
do the same in your MAPNAME.csc file

now in your mapname.zone add this at the bottom:
Code:
weapon,zombie_perk_bottle_blood_wolf_bite
image,i_specialty_bloodwolf_zombies
scriptparsetree,scripts/zm/_zm_perk_blood_wolf_bite.gsc
scriptparsetree,scripts/zm/_zm_perk_blood_wolf_bite.csc
scriptparsetree,scripts/zm/_zm_perk_blood_wolf_bite.gsh
xmodel,blood_wolf_luna
xmodel,cz_zombie_vending_blood_wolf_bite
 
Last edited:

Snprym

Member
I really appreciate you releasing this pack, but Ive noticed something. Im getting the same perk multiple times when using Madgazz' wunderfizz. Any idea why?
 
this wasnt set up to be capatable with madgaz's wonderfizz, but you can make it
open his _zm_perk_wunderfizz2.gsc and find "function get_unowned_perks()"
replace that function with this:

Code:
function get_unowned_perks()
{
    perks = getArrayKeys( level._custom_perks );
    if ( !isDefined( perks ) || perks.size < 1 )
        return undefined;
    
    array = [];
    for ( i = 0; i < perks.size; i++ )
    {    
        if(is_new_perk( perks[ i ]))
        {
            if(!self HasPerkNew( perks[ i ]))
                array[ array.size ] = perks[ i ];
        }
        else
        if ( !self hasPerk( perks[ i ] ) )
            array[ array.size ] = perks[ i ];
        
    }
    if ( !isDefined( array ) || array.size < 1 )
        return undefined;
    
    return array;
}


function HasPerkNew(perk)
{
    if(!isdefined(self.player_cz_perks))
        return false;
    if(isdefined(self.player_cz_perks) && isdefined(self.player_cz_perks[perk]))
        return true;
    return false;
}

function is_new_perk(perk)
{  
    if(isdefined(level.reap_custom_perk_array) && isdefined(level.reap_custom_perk_array[perk]))
        return true;
    return false;
}
 

Snprym

Member
this wasnt set up to be capatable with madgaz's wonderfizz, but you can make it
open his _zm_perk_wunderfizz2.gsc and find "function get_unowned_perks()"
replace that function with this:

Code:
function get_unowned_perks()
{
    perks = getArrayKeys( level._custom_perks );
    if ( !isDefined( perks ) || perks.size < 1 )
        return undefined;
   
    array = [];
    for ( i = 0; i < perks.size; i++ )
    {   
        if(is_new_perk( perks[ i ]))
        {
            if(!self HasPerkNew( perks[ i ]))
                array[ array.size ] = perks[ i ];
        }
        else
        if ( !self hasPerk( perks[ i ] ) )
            array[ array.size ] = perks[ i ];
       
    }
    if ( !isDefined( array ) || array.size < 1 )
        return undefined;
   
    return array;
}


function HasPerkNew(perk)
{
    if(!isdefined(self.player_cz_perks))
        return false;
    if(isdefined(self.player_cz_perks) && isdefined(self.player_cz_perks[perk]))
        return true;
    return false;
}

function is_new_perk(perk)
{ 
    if(isdefined(level.reap_custom_perk_array) && isdefined(level.reap_custom_perk_array[perk]))
        return true;
    return false;
}
Thank you soo much man
 

Simplyzak09

New member
Would this also work with the wunderfizz from the modme wiki ?

this wasnt set up to be capatable with madgaz's wonderfizz, but you can make it
open his _zm_perk_wunderfizz2.gsc and find "function get_unowned_perks()"
replace that function with this:

Code:
function get_unowned_perks()
{
    perks = getArrayKeys( level._custom_perks );
    if ( !isDefined( perks ) || perks.size < 1 )
        return undefined;
   
    array = [];
    for ( i = 0; i < perks.size; i++ )
    {   
        if(is_new_perk( perks[ i ]))
        {
            if(!self HasPerkNew( perks[ i ]))
                array[ array.size ] = perks[ i ];
        }
        else
        if ( !self hasPerk( perks[ i ] ) )
            array[ array.size ] = perks[ i ];
       
    }
    if ( !isDefined( array ) || array.size < 1 )
        return undefined;
   
    return array;
}


function HasPerkNew(perk)
{
    if(!isdefined(self.player_cz_perks))
        return false;
    if(isdefined(self.player_cz_perks) && isdefined(self.player_cz_perks[perk]))
        return true;
    return false;
}

function is_new_perk(perk)
{ 
    if(isdefined(level.reap_custom_perk_array) && isdefined(level.reap_custom_perk_array[perk]))
        return true;
    return false;
}
 
you would need to copy _zm_perk_random.gsc from Call of Duty Black Ops III\share\raw\scripts\zm
into your maps scripts/zm folder, then open it and replace the
function get_weighted_random_perk( player )
function with this:

Code:
function get_weighted_random_perk( player )
{
    keys = array::randomize( GetArrayKeys( level._random_perk_machine_perk_list ) );

    // if the level has a custom perk weights function, use that to set up the array with appropriate weighting
    if ( IsDefined( level.custom_random_perk_weights ) )
    {
        keys = player [[ level.custom_random_perk_weights ]]();
    }

    /#
    forced_perk = GetDvarString( "scr_force_perk" );
    if ( forced_perk != "" && IsDefined( level._random_perk_machine_perk_list[ forced_perk ] ) )
    {
        ArrayInsert( keys, forced_perk, 0 );
    }
    #/

    // loop through the list of perks until you find one the player doesn't have; return that perk from the array
    for ( i = 0; i < keys.size; i++ )
    {
        if(is_new_perk(level._random_perk_machine_perk_list[ keys[ i ]]) && player HasPerkNew(level._random_perk_machine_perk_list[ keys[ i ]]))
        {
            continue;
        }
        else
        if ( !is_new_perk(level._random_perk_machine_perk_list[ keys[ i ]]) && player HasPerk( level._random_perk_machine_perk_list[ keys[ i ]] ) )
        {
            continue;
        }
        else
        {
            return level._random_perk_machine_perk_list[ keys[ i ]];
        }
    }

    return level._random_perk_machine_perk_list[ keys[ 0 ]];
}

function is_new_perk(perk)
{
    if(isdefined(level.reap_custom_perk_array) && isdefined(level.reap_custom_perk_array[perk]))
        return true;
    return false;
}
function HasPerkNew(perk)
{
    if(!isdefined(self.player_cz_perks))
        return false;
    if(isdefined(self.player_cz_perks) && isdefined(self.player_cz_perks[perk]))
        return true;
    return false;
}
 

Simplyzak09

New member
Brilliant Thank you

you would need to copy _zm_perk_random.gsc from Call of Duty Black Ops III\share\raw\scripts\zm
into your maps scripts/zm folder, then open it and replace the
function get_weighted_random_perk( player )
function with this:

Code:
function get_weighted_random_perk( player )
{
    keys = array::randomize( GetArrayKeys( level._random_perk_machine_perk_list ) );

    // if the level has a custom perk weights function, use that to set up the array with appropriate weighting
    if ( IsDefined( level.custom_random_perk_weights ) )
    {
        keys = player [[ level.custom_random_perk_weights ]]();
    }

    /#
    forced_perk = GetDvarString( "scr_force_perk" );
    if ( forced_perk != "" && IsDefined( level._random_perk_machine_perk_list[ forced_perk ] ) )
    {
        ArrayInsert( keys, forced_perk, 0 );
    }
    #/

    // loop through the list of perks until you find one the player doesn't have; return that perk from the array
    for ( i = 0; i < keys.size; i++ )
    {
        if(is_new_perk(level._random_perk_machine_perk_list[ keys[ i ]]) && player HasPerkNew(level._random_perk_machine_perk_list[ keys[ i ]]))
        {
            continue;
        }
        else
        if ( !is_new_perk(level._random_perk_machine_perk_list[ keys[ i ]]) && player HasPerk( level._random_perk_machine_perk_list[ keys[ i ]] ) )
        {
            continue;
        }
        else
        {
            return level._random_perk_machine_perk_list[ keys[ i ]];
        }
    }

    return level._random_perk_machine_perk_list[ keys[ 0 ]];
}

function is_new_perk(perk)
{
    if(isdefined(level.reap_custom_perk_array) && isdefined(level.reap_custom_perk_array[perk]))
        return true;
    return false;
}
function HasPerkNew(perk)
{
    if(!isdefined(self.player_cz_perks))
        return false;
    if(isdefined(self.player_cz_perks) && isdefined(self.player_cz_perks[perk]))
        return true;
    return false;
}
 
if He just set his perks up to use the normal perk systems using any of the 25 free specialty names - it would already work with both - and the rest of the 3arc functionality
 

Pepergogo

Undead member
Hi, first of all I think you're a legend and this is awesomeee!!
Second I just have a question:
I download "Timeslip" and I'm using Harry's mystery box (https://wiki.modme.co/wiki/black_ops_3/basics/Setting-Up-Different-Mystery-Boxes-(-Origins,-MOTD-and-SOE-included-).html), and there's a same file name "mystery_box.gsc".
I wonder, is there a way to use or modify the .gsc file so I can use that mystery box with timeslip?
I try adding the "#using scripts\zm\_zm_perk_timeslip;" to the .gsc I already have, but the perk doesn't work :(
 
Top