Setting up perk machines
Updated 428 Days AgoPublic

This document was moved from /w/black_ops_3/setup_perks/.
NOTE: Juggernog, Quick Revive, Speed Cola, Double Tap, Stamin-up, Deadshot, Mulekick: These machines are already included as prefabs in <BlackOps3Root>/Usermaps/_prefabs/. You can simply add them to radiant without any additional work

Widows Wine

First you need to download the already made prefab here: download

Place the prefab in BlackOps3Root/map_source/_prefabs/.

Next open up your mapname.gsc in usermaps/mapname/scripts/zm.

Under the //Perks comment you'll see the base perk scripts, under the last line (Staminup) put:

#using scripts\zm\_zm_perk_widows_wine;

Close that file and open up mapname.csc in the same directory, find the //Perks line again and add the same code listed above to the script, save and close.

You can rebuild and use Widows Wine.


Electric Cherry

This machine requires some extra work, take your time to ensure it's done properly.

You need to rip the model with Wraith and import it to APE yourself.

Download for the already made prefab here: download

Place the prefab in BlackOps3Root/map_source/_prefabs/.

Open up BlackOps3Root/share/raw/scripts/zm/_zm_perk_electric_cherry.gsc.

Find the "//TODO update these to proper settings" comment they left.

Modify all of those defines to say (Modify model name if you've changed it):

#define ELECTRIC_CHERRY_PERK_COST                   2000
#define ELECTRIC_CHERRY_PERK_BOTTLE_WEAPON          "zombie_perk_bottle_cherry"
#define ELECTRIC_CHERRY_SHADER                      "specialty_blue_electric_cherry_zombies"
#define ELECTRIC_CHERRY_MACHINE_DISABLED_MODEL      "p6_zm_vending_electric_cherry_off" 
//                                                   ^^ Change this to your OFF xmodel
#define ELECTRIC_CHERRY_MACHINE_ACTIVE_MODEL        "p6_zm_vending_electric_cherry_on" 
//                                                   ^^ Change this to your ON xmodel
#define ELECTRIC_CHERRY_RADIANT_MACHINE_NAME        "vending_electriccherry"
#define ELECTRIC_CHERRY_MACHINE_LIGHT_FX            "electric_cherry_light" 

Next find the function enable_electric_cherry_perk_for_level() and change it to:

function enable_electric_cherry_perk_for_level()
{	
	// register ec perk for level
	zm_perks::register_perk_basic_info( PERK_ELECTRIC_CHERRY, "electric_cherry", ELECTRIC_CHERRY_PERK_COST, "Hold ^3[{+activate}]^7 for Electric Cherry [Cost: &&1]", GetWeapon( ELECTRIC_CHERRY_PERK_BOTTLE_WEAPON ) );
	zm_perks::register_perk_precache_func( PERK_ELECTRIC_CHERRY, &electric_cherry_precache );
	zm_perks::register_perk_clientfields( PERK_ELECTRIC_CHERRY, &electric_cherry_register_clientfield, &electric_cherry_set_clientfield );
	zm_perks::register_perk_machine( PERK_ELECTRIC_CHERRY, &electric_cherry_perk_machine_setup );
	zm_perks::register_perk_host_migration_params( PERK_ELECTRIC_CHERRY, ELECTRIC_CHERRY_RADIANT_MACHINE_NAME, ELECTRIC_CHERRY_MACHINE_LIGHT_FX );
	
	zm_perks::register_perk_threads( PERK_ELECTRIC_CHERRY, &electric_cherry_reload_attack , &electric_cherry_perk_lost  );
	
	if( IS_TRUE( level.custom_electric_cherry_perk_threads ) )
	{
		level thread [[ level.custom_electric_cherry_perk_threads ]]();
	}

	init_electric_cherry();
}

Next find the function electric_cherry_perk_machine_setup() and replace with:

function electric_cherry_perk_machine_setup( use_trigger, perk_machine, bump_trigger, collision )
{
	use_trigger.script_sound = "mus_perks_ec_jingle";
	use_trigger.script_string = "electriccherry_perk";
	use_trigger.script_label = "mus_perks_ec_sting";
	use_trigger.target = "vending_electriccherry";
	perk_machine.script_string = "electriccherry_perk";
	perk_machine.targetname = "vending_electriccherry";
	if( IsDefined( bump_trigger ) )
	{
		bump_trigger.script_string = "electriccherry_perk";
	}
}

Finally, find and replace vending_marathon with vending_electriccherry.

Also find and replace marathon_perk with electriccherry_perk.

Save and close the file.

Next open up your mapname.gsc in usermaps/mapname/scripts/zm.

Under the //Perks comment you'll see the base perk scripts, under the last line (Staminup) put:

#using scripts\zm\_zm_perk_electric_cherry;

Close that file and open up mapname.csc in the same directory, find the //Perks line again and add the same code listed above to the script, save and close.

Next, include these scripts in your mapname.zone located at BlackOps3Root/usermaps/mapname/zone_source.

Add the following lines and modify the model name if you've changed it:

//EC
xmodel,p6_zm_vending_electric_cherry_off
xmodel,p6_zm_vending_electric_cherry_on
scriptparsetree,scripts/zm/_zm_perk_electric_cherry.gsc
scriptparsetree,scripts/zm/_zm_perk_electric_cherry.csc

More perks to come!

  • PhD Flopper
  • Who's Who
  • Vulture Aid
  • Tombstone

Contributors
DTZxPorter
Harry Bo21
Exofile

Last Author
Koan
Subscribers
None
Projects
None