Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function triggered_perks()
- {
- zm_perks::register_perk_machine_power_override( "specialty_armorvest", &wait_for_trigger );
- zm_perks::register_perk_machine_power_override( "specialty_quickrevive", &wait_for_trigger );
- zm_perks::register_perk_machine_power_override( "specialty_fastreload", &wait_for_trigger );
- zm_perks::register_perk_machine_power_override( "specialty_doubletap2", &wait_for_trigger );
- zm_perks::register_perk_machine_power_override( "specialty_staminup", &wait_for_trigger );
- zm_perks::register_perk_machine_power_override( "specialty_phdflopper", &wait_for_trigger );
- zm_perks::register_perk_machine_power_override( "specialty_deadshot", &wait_for_trigger );
- zm_perks::register_perk_machine_power_override( "specialty_additionalprimaryweapon", &wait_for_trigger );
- zm_perks::register_perk_machine_power_override( "specialty_electriccherry", &wait_for_trigger );
- zm_perks::register_perk_machine_power_override( "specialty_widowswine", &wait_for_trigger );
- }
- function wait_for_trigger()
- {
- if( isDefined( level.run_special_power_once ) ) // make the func run once and only once
- return;
- level.run_special_power_once = true;
- trigs = GetEntArray( "triggered_perks", "targetname" );
- foreach( trig in trigs )
- trig thread activate_on_shoot();
- }
- function activate_on_shoot()
- {
- while(1)
- {
- self waittill( "damage", amount, attacker, direction_vec, point, type, tagName, modelName, partName, weapon, dFlags, inflictor, chargeLevel );
- if( weapon == GetWeapon("tesla_gun") ) // change tesla_gun to whatever weapon you want
- {
- perk_machine_think( self.script_noteworthy, level._custom_perks[ self.script_noteworthy ] );
- break;
- }
- }
- }
- function perk_machine_think( str_key, s_custom_perk )
- {
- str_endon = str_key + PERK_END_POWER_THREAD;
- level endon( str_endon );//Support endon for any perk machine
- str_on = s_custom_perk.alias + "_on";
- str_off = s_custom_perk.alias + "_off";
- str_notify = str_key + "_power_on";
- while ( true )
- {
- machine = getentarray( s_custom_perk.radiant_machine_name, "targetname");
- machine_triggers = GetEntArray( s_custom_perk.radiant_machine_name, "target" );
- for( i = 0; i < machine.size; i++ )
- machine[i] SetModel(level.machine_assets[str_key].off_model);
- level thread zm_perks::do_initial_power_off_callback( machine, str_key );
- array::thread_all( machine_triggers, &zm_perks::set_power_on, false );
- // level waittill( str_on );
- for( i = 0; i < machine.size; i++ )
- {
- machine[i] SetModel(level.machine_assets[str_key].on_model);
- machine[i] vibrate((0,-100,0), 0.3, 0.4, 3);
- machine[i] playsound("zmb_perks_power_on");
- machine[i] thread zm_perks::perk_fx( s_custom_perk.machine_light_effect );
- machine[i] thread zm_perks::play_loop_on_machine();
- }
- level notify( str_notify );
- array::thread_all( machine_triggers, &zm_perks::set_power_on, true );
- if( isdefined( level.machine_assets[ str_key ].power_on_callback ) )
- {
- array::thread_all( machine, level.machine_assets[ str_key ].power_on_callback );
- }
- level waittill( str_off );
- if( isdefined( level.machine_assets[ str_key ].power_off_callback ) )
- {
- array::thread_all( machine, level.machine_assets[ str_key ].power_off_callback );
- }
- array::thread_all( machine, &zm_perks::turn_perk_off );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment