mirror of
https://github.com/JezuzLizard/Recompilable-gscs-for-BO2-zombies-and-multiplayer.git
synced 2025-06-08 01:47:50 -05:00
checked _zm_perk_divetonuke
_zm_perk_divetonuke has not been tested.
This commit is contained in:
parent
40c6e911d1
commit
438d380850
1
engine functions and descriptions.md
Normal file
1
engine functions and descriptions.md
Normal file
@ -0,0 +1 @@
|
|||||||
|
- weapon_name is a STRING
|
@ -1,3 +1,4 @@
|
|||||||
|
//checked includes match cerberus output
|
||||||
#include maps/mp/_visionset_mgr;
|
#include maps/mp/_visionset_mgr;
|
||||||
#include maps/mp/zombies/_zm_perks;
|
#include maps/mp/zombies/_zm_perks;
|
||||||
#include maps/mp/zombies/_zm_net;
|
#include maps/mp/zombies/_zm_net;
|
||||||
@ -5,7 +6,7 @@
|
|||||||
#include common_scripts/utility;
|
#include common_scripts/utility;
|
||||||
#include maps/mp/_utility;
|
#include maps/mp/_utility;
|
||||||
|
|
||||||
enable_divetonuke_perk_for_level()
|
enable_divetonuke_perk_for_level() //checked matches cerberus output
|
||||||
{
|
{
|
||||||
maps/mp/zombies/_zm_perks::register_perk_basic_info( "specialty_flakjacket", "divetonuke", 2000, &"ZOMBIE_PERK_DIVETONUKE", "zombie_perk_bottle_nuke" );
|
maps/mp/zombies/_zm_perks::register_perk_basic_info( "specialty_flakjacket", "divetonuke", 2000, &"ZOMBIE_PERK_DIVETONUKE", "zombie_perk_bottle_nuke" );
|
||||||
maps/mp/zombies/_zm_perks::register_perk_precache_func( "specialty_flakjacket", ::divetonuke_precache );
|
maps/mp/zombies/_zm_perks::register_perk_precache_func( "specialty_flakjacket", ::divetonuke_precache );
|
||||||
@ -14,7 +15,7 @@ enable_divetonuke_perk_for_level()
|
|||||||
maps/mp/zombies/_zm_perks::register_perk_host_migration_func( "specialty_flakjacket", ::divetonuke_host_migration_func );
|
maps/mp/zombies/_zm_perks::register_perk_host_migration_func( "specialty_flakjacket", ::divetonuke_host_migration_func );
|
||||||
}
|
}
|
||||||
|
|
||||||
init_divetonuke()
|
init_divetonuke() //checked matches cerberus output
|
||||||
{
|
{
|
||||||
level.zombiemode_divetonuke_perk_func = ::divetonuke_explode;
|
level.zombiemode_divetonuke_perk_func = ::divetonuke_explode;
|
||||||
maps/mp/_visionset_mgr::vsmgr_register_info( "visionset", "zm_perk_divetonuke", 9000, 400, 5, 1 );
|
maps/mp/_visionset_mgr::vsmgr_register_info( "visionset", "zm_perk_divetonuke", 9000, 400, 5, 1 );
|
||||||
@ -24,7 +25,7 @@ init_divetonuke()
|
|||||||
set_zombie_var( "zombie_perk_divetonuke_max_damage", 5000 );
|
set_zombie_var( "zombie_perk_divetonuke_max_damage", 5000 );
|
||||||
}
|
}
|
||||||
|
|
||||||
divetonuke_precache()
|
divetonuke_precache() //checked matches cerberus output
|
||||||
{
|
{
|
||||||
if ( isDefined( level.divetonuke_precache_override_func ) )
|
if ( isDefined( level.divetonuke_precache_override_func ) )
|
||||||
{
|
{
|
||||||
@ -43,17 +44,17 @@ divetonuke_precache()
|
|||||||
level.machine_assets[ "divetonuke" ].on_model = "zombie_vending_nuke_on";
|
level.machine_assets[ "divetonuke" ].on_model = "zombie_vending_nuke_on";
|
||||||
}
|
}
|
||||||
|
|
||||||
divetonuke_register_clientfield()
|
divetonuke_register_clientfield() //checked matches cerberus output
|
||||||
{
|
{
|
||||||
registerclientfield( "toplayer", "perk_dive_to_nuke", 9000, 1, "int" );
|
registerclientfield( "toplayer", "perk_dive_to_nuke", 9000, 1, "int" );
|
||||||
}
|
}
|
||||||
|
|
||||||
divetonuke_set_clientfield( state )
|
divetonuke_set_clientfield( state ) //checked matches cerberus output
|
||||||
{
|
{
|
||||||
self setclientfieldtoplayer( "perk_dive_to_nuke", state );
|
self setclientfieldtoplayer( "perk_dive_to_nuke", state );
|
||||||
}
|
}
|
||||||
|
|
||||||
divetonuke_perk_machine_setup( use_trigger, perk_machine, bump_trigger, collision )
|
divetonuke_perk_machine_setup( use_trigger, perk_machine, bump_trigger, collision ) //checked matches cerberus output
|
||||||
{
|
{
|
||||||
use_trigger.script_sound = "mus_perks_phd_jingle";
|
use_trigger.script_sound = "mus_perks_phd_jingle";
|
||||||
use_trigger.script_string = "divetonuke_perk";
|
use_trigger.script_string = "divetonuke_perk";
|
||||||
@ -67,31 +68,27 @@ divetonuke_perk_machine_setup( use_trigger, perk_machine, bump_trigger, collisio
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
divetonuke_perk_machine_think()
|
divetonuke_perk_machine_think() //checked changed to match cerberus output
|
||||||
{
|
{
|
||||||
init_divetonuke();
|
init_divetonuke();
|
||||||
while ( 1 )
|
while ( 1 )
|
||||||
{
|
{
|
||||||
machine = getentarray( "vending_divetonuke", "targetname" );
|
machine = getentarray( "vending_divetonuke", "targetname" );
|
||||||
machine_triggers = getentarray( "vending_divetonuke", "target" );
|
machine_triggers = getentarray( "vending_divetonuke", "target" );
|
||||||
i = 0;
|
for ( i = 0; i < machine.size; i++ )
|
||||||
while ( i < machine.size )
|
|
||||||
{
|
{
|
||||||
machine[ i ] setmodel( level.machine_assets[ "divetonuke" ].off_model );
|
machine[ i ] setmodel( level.machine_assets[ "divetonuke" ].off_model );
|
||||||
i++;
|
|
||||||
}
|
}
|
||||||
array_thread( machine_triggers, ::set_power_on, 0 );
|
array_thread( machine_triggers, ::set_power_on, 0 );
|
||||||
level thread do_initial_power_off_callback( machine, "divetonuke" );
|
level thread do_initial_power_off_callback( machine, "divetonuke" );
|
||||||
level waittill( "divetonuke_on" );
|
level waittill( "divetonuke_on" );
|
||||||
i = 0;
|
for ( i = 0; i < machine.size; i++ )
|
||||||
while ( i < machine.size )
|
|
||||||
{
|
{
|
||||||
machine[ i ] setmodel( level.machine_assets[ "divetonuke" ].on_model );
|
machine[ i ] setmodel( level.machine_assets[ "divetonuke" ].on_model );
|
||||||
machine[ i ] vibrate( vectorScale( ( 0, -1, 0 ), 100 ), 0,3, 0,4, 3 );
|
machine[ i ] vibrate( vectorScale( ( 0, -1, 0 ), 100 ), 0.3, 0.4, 3 );
|
||||||
machine[ i ] playsound( "zmb_perks_power_on" );
|
machine[ i ] playsound( "zmb_perks_power_on" );
|
||||||
machine[ i ] thread perk_fx( "divetonuke_light" );
|
machine[ i ] thread perk_fx( "divetonuke_light" );
|
||||||
machine[ i ] thread play_loop_on_machine();
|
machine[ i ] thread play_loop_on_machine();
|
||||||
i++;
|
|
||||||
}
|
}
|
||||||
level notify( "specialty_flakjacket_power_on" );
|
level notify( "specialty_flakjacket_power_on" );
|
||||||
array_thread( machine_triggers, ::set_power_on, 1 );
|
array_thread( machine_triggers, ::set_power_on, 1 );
|
||||||
@ -108,20 +105,16 @@ divetonuke_perk_machine_think()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
divetonuke_host_migration_func()
|
divetonuke_host_migration_func() //checked changed to match cerberus output
|
||||||
{
|
{
|
||||||
flop = getentarray( "vending_divetonuke", "targetname" );
|
flop = getentarray( "vending_divetonuke", "targetname" );
|
||||||
_a138 = flop;
|
foreach ( perk in flop )
|
||||||
_k138 = getFirstArrayKey( _a138 );
|
|
||||||
while ( isDefined( _k138 ) )
|
|
||||||
{
|
{
|
||||||
perk = _a138[ _k138 ];
|
|
||||||
if ( isDefined( perk.model ) && perk.model == level.machine_assets[ "divetonuke" ].on_model )
|
if ( isDefined( perk.model ) && perk.model == level.machine_assets[ "divetonuke" ].on_model )
|
||||||
{
|
{
|
||||||
perk perk_fx( undefined, 1 );
|
perk perk_fx( undefined, 1 );
|
||||||
perk thread perk_fx( "divetonuke_light" );
|
perk thread perk_fx( "divetonuke_light" );
|
||||||
}
|
}
|
||||||
_k138 = getNextArrayKey( _a138, _k138 );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -130,10 +123,47 @@ divetonuke_explode( attacker, origin )
|
|||||||
radius = level.zombie_vars[ "zombie_perk_divetonuke_radius" ];
|
radius = level.zombie_vars[ "zombie_perk_divetonuke_radius" ];
|
||||||
min_damage = level.zombie_vars[ "zombie_perk_divetonuke_min_damage" ];
|
min_damage = level.zombie_vars[ "zombie_perk_divetonuke_min_damage" ];
|
||||||
max_damage = level.zombie_vars[ "zombie_perk_divetonuke_max_damage" ];
|
max_damage = level.zombie_vars[ "zombie_perk_divetonuke_max_damage" ];
|
||||||
radiusdamage( origin, radius, max_damage, min_damage, attacker, "MOD_GRENADE_SPLASH" );
|
if ( isdefined( level.flopper_network_optimized ) && level.flopper_network_optimized )
|
||||||
|
{
|
||||||
|
attacker thread divetonuke_explode_network_optimized(origin, radius, max_damage, min_damage, "MOD_GRENADE_SPLASH" );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
radiusdamage( origin, radius, max_damage, min_damage, attacker, "MOD_GRENADE_SPLASH" );
|
||||||
|
}
|
||||||
playfx( level._effect[ "divetonuke_groundhit" ], origin );
|
playfx( level._effect[ "divetonuke_groundhit" ], origin );
|
||||||
attacker playsound( "zmb_phdflop_explo" );
|
attacker playsound( "zmb_phdflop_explo" );
|
||||||
maps/mp/_visionset_mgr::vsmgr_activate( "visionset", "zm_perk_divetonuke", attacker );
|
maps/mp/_visionset_mgr::vsmgr_activate( "visionset", "zm_perk_divetonuke", attacker );
|
||||||
wait 1;
|
wait 1;
|
||||||
maps/mp/_visionset_mgr::vsmgr_deactivate( "visionset", "zm_perk_divetonuke", attacker );
|
maps/mp/_visionset_mgr::vsmgr_deactivate( "visionset", "zm_perk_divetonuke", attacker );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
divetonuke_explode_network_optimized(origin, radius, max_damage, min_damage, damage_mod)
|
||||||
|
{
|
||||||
|
self endon( "disconnect" );
|
||||||
|
a_zombies = get_array_of_closest( origin, get_round_enemy_array(), undefined, undefined, radius );
|
||||||
|
network_stall_counter = 0;
|
||||||
|
if ( isdefined( a_zombies ) )
|
||||||
|
{
|
||||||
|
i = 0;
|
||||||
|
while ( i < a_zombies.size )
|
||||||
|
{
|
||||||
|
e_zombie = a_zombies[ i ];
|
||||||
|
if ( !isdefined( e_zombie ) || !isalive( e_zombie ) )
|
||||||
|
{
|
||||||
|
i++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
dist = distance( e_zombie.origin, origin );
|
||||||
|
damage = ( min_damage + max_damage ) - min_damage * ( 1 - ( dist / radius ) );
|
||||||
|
e_zombie dodamage(damage, e_zombie.origin, self, self, 0, damage_mod);
|
||||||
|
network_stall_counter--;
|
||||||
|
if ( network_stall_counter <= 0 )
|
||||||
|
{
|
||||||
|
wait_network_frame();
|
||||||
|
network_stall_counter = randomintrange( 1, 3 );
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -16,10 +16,10 @@ zm_prison_patch/maps/mp/zm_prison.gsc
|
|||||||
```
|
```
|
||||||
### The following scripts have been checked, but they have not been tested yet
|
### The following scripts have been checked, but they have not been tested yet
|
||||||
```
|
```
|
||||||
|
zm_prison_patch/maps/mp/zombies/_zm_perk_divetonuke.gsc
|
||||||
```
|
```
|
||||||
### The following scripts are not checked yet, uploaded to setup a baseline:
|
### The following scripts are not checked yet, uploaded to setup a baseline:
|
||||||
```
|
```
|
||||||
zm_prison_patch/maps/mp/zombies/_zm_perk_divetonuke.gsc
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user