ztavern/t6/uncompiled mods/emp_no_perk_disable.gsc
2024-10-18 00:19:19 +00:00

71 lines
No EOL
2.4 KiB
Text

#include common_scripts\utility;
#include maps\mp\_utility;
#include maps\mp\zombies\_zm_utility;
#include maps\mp\zombies\_zm_perks;
#include maps\mp\_demo;
#include maps\mp\zombies\_zm_ai_basic;
//always add includes of the replaced functions
main()
{
if (level.script == "zm_transit") //only for transit
{
replaceFunc( maps\mp\zombies\_zm_power::change_power_in_radius, ::emp_no_perk_disable); //replace base function by custom function
}
}
emp_no_perk_disable( delta, origin, radius )
{
changed_list = [];
if (level.script == "zm_transit")
{
for ( i = 0; i < level.powered_items.size; i++ )
{
powered = level.powered_items[i]; // this is in base code and is equivalent to a foreach item in level.powered_items
if (isdefined(powered.target) && powered.target) // check if target exist
{
if (isdefined(powered.target.script_noteworthy) && powered.target.script_noteworthy) // check if target name exist
{
powered_name = strTok(powered.target.script_noteworthy, "_"); //separate the target name using "_" (since we want only to avoid disabled perks and their name is "specialty_XXX"
if ( powered.power_sources != 2 && powered_name[0] != "specialty") // in powered_named array, check if the first text element is different than "specialty"
{
if ( powered [[ powered.range_func ]]( delta, origin, radius ) )
{
powered maps\mp\zombies\_zm_power::change_power( delta, origin, radius ); //if the replaced functions call other functions you must link the called function path
changed_list[changed_list.size] = powered;
}
}
}
/* else
{
iprintLn("^1Error^7, please contact ^1admin^7");
}*/
}
/* else
{
iprintLn("^1Error^7, please contact ^1admin^7");
}*/
}
return changed_list;
}
else
{
for ( i = 0; i < level.powered_items.size; i++ )
{
powered = level.powered_items[i];
if ( powered.power_sources != 2 )
{
if ( powered [[ powered.range_func ]]( delta, origin, radius ) )
{
powered maps\mp\zombies\_zm_power::change_power( delta, origin, radius );
changed_list[changed_list.size] = powered;
}
}
}
return changed_list;
}
}