mirror of
https://github.com/JezuzLizard/t6-fastfile-mods.git
synced 2025-04-20 05:35:43 +00:00
Convert more builtins to use sys namespace. Add pluto_sys builtins and documentation.
This commit is contained in:
parent
2ab3179a84
commit
d9bad17bb3
@ -789,8 +789,8 @@ main()
|
|||||||
self.team = "axis";
|
self.team = "axis";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
randchar = codescripts\character::get_random_character( 3 );
|
randchar = codescripts\character::get_random_character( 3 );
|
||||||
|
|
||||||
switch ( randchar )
|
switch ( randchar )
|
||||||
@ -806,18 +806,18 @@ main()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
self setcharacterindex( randchar );
|
self sys::setcharacterindex( randchar );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "axis" );
|
self sys::setspawnerteam( "axis" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_all_basic" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_all_basic" );
|
||||||
character\c_zom_guard::precache();
|
character\c_zom_guard::precache();
|
||||||
character\c_zom_inmate1::precache();
|
character\c_zom_inmate1::precache();
|
||||||
character\c_zom_inmate2::precache();
|
character\c_zom_inmate2::precache();
|
||||||
|
@ -64,20 +64,20 @@ main()
|
|||||||
self.team = "axis";
|
self.team = "axis";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
character\c_zom_cellbreaker::main();
|
character\c_zom_cellbreaker::main();
|
||||||
self setcharacterindex( 0 );
|
self sys::setcharacterindex( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "axis" );
|
self sys::setspawnerteam( "axis" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_alcatraz_brutus" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_alcatraz_brutus" );
|
||||||
character\c_zom_cellbreaker::precache();
|
character\c_zom_cellbreaker::precache();
|
||||||
}
|
}
|
||||||
|
@ -37,20 +37,20 @@ main()
|
|||||||
self.team = "allies";
|
self.team = "allies";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
character\c_zom_ally_cdc::main();
|
character\c_zom_ally_cdc::main();
|
||||||
self setcharacterindex( 0 );
|
self sys::setcharacterindex( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "allies" );
|
self sys::setspawnerteam( "allies" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_ally_basic" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_ally_basic" );
|
||||||
character\c_zom_ally_cdc::precache();
|
character\c_zom_ally_cdc::precache();
|
||||||
}
|
}
|
||||||
|
@ -37,20 +37,20 @@ main()
|
|||||||
self.team = "allies";
|
self.team = "allies";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
character\c_zom_ally_farmgirl::main();
|
character\c_zom_ally_farmgirl::main();
|
||||||
self setcharacterindex( 0 );
|
self sys::setcharacterindex( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "allies" );
|
self sys::setspawnerteam( "allies" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_ally_basic" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_ally_basic" );
|
||||||
character\c_zom_ally_farmgirl::precache();
|
character\c_zom_ally_farmgirl::precache();
|
||||||
}
|
}
|
||||||
|
@ -368,20 +368,20 @@ main()
|
|||||||
self.team = "axis";
|
self.team = "axis";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
character\c_zom_zombie_buried_civilian1::main();
|
character\c_zom_zombie_buried_civilian1::main();
|
||||||
self setcharacterindex( 0 );
|
self sys::setcharacterindex( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "axis" );
|
self sys::setspawnerteam( "axis" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_buried_basic" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_buried_basic" );
|
||||||
character\c_zom_zombie_buried_civilian1::precache();
|
character\c_zom_zombie_buried_civilian1::precache();
|
||||||
}
|
}
|
||||||
|
@ -370,8 +370,8 @@ main()
|
|||||||
self.team = "axis";
|
self.team = "axis";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
randchar = codescripts\character::get_random_character( 3 );
|
randchar = codescripts\character::get_random_character( 3 );
|
||||||
|
|
||||||
switch ( randchar )
|
switch ( randchar )
|
||||||
@ -387,18 +387,18 @@ main()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
self setcharacterindex( randchar );
|
self sys::setcharacterindex( randchar );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "axis" );
|
self sys::setspawnerteam( "axis" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_buried_basic" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_buried_basic" );
|
||||||
character\c_zom_zombie_buried_civilian2::precache();
|
character\c_zom_zombie_buried_civilian2::precache();
|
||||||
character\c_zom_zombie_buried_civilian2_nohat::precache();
|
character\c_zom_zombie_buried_civilian2_nohat::precache();
|
||||||
character\c_zom_zombie_buried_civilian2_nohat::precache();
|
character\c_zom_zombie_buried_civilian2_nohat::precache();
|
||||||
|
@ -370,8 +370,8 @@ main()
|
|||||||
self.team = "axis";
|
self.team = "axis";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
randchar = codescripts\character::get_random_character( 3 );
|
randchar = codescripts\character::get_random_character( 3 );
|
||||||
|
|
||||||
switch ( randchar )
|
switch ( randchar )
|
||||||
@ -387,18 +387,18 @@ main()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
self setcharacterindex( randchar );
|
self sys::setcharacterindex( randchar );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "axis" );
|
self sys::setspawnerteam( "axis" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_buried_basic" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_buried_basic" );
|
||||||
character\c_zom_zombie_buried_civilian3::precache();
|
character\c_zom_zombie_buried_civilian3::precache();
|
||||||
character\c_zom_zombie_buried_civilian3_nohat::precache();
|
character\c_zom_zombie_buried_civilian3_nohat::precache();
|
||||||
character\c_zom_zombie_buried_civilian3_nohat::precache();
|
character\c_zom_zombie_buried_civilian3_nohat::precache();
|
||||||
|
@ -370,8 +370,8 @@ main()
|
|||||||
self.team = "axis";
|
self.team = "axis";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
randchar = codescripts\character::get_random_character( 3 );
|
randchar = codescripts\character::get_random_character( 3 );
|
||||||
|
|
||||||
switch ( randchar )
|
switch ( randchar )
|
||||||
@ -387,18 +387,18 @@ main()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
self setcharacterindex( randchar );
|
self sys::setcharacterindex( randchar );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "axis" );
|
self sys::setspawnerteam( "axis" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_buried_basic" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_buried_basic" );
|
||||||
character\c_zom_zombie_buried_civilian4::precache();
|
character\c_zom_zombie_buried_civilian4::precache();
|
||||||
character\c_zom_zombie_buried_civilian4_nohat::precache();
|
character\c_zom_zombie_buried_civilian4_nohat::precache();
|
||||||
character\c_zom_zombie_buried_civilian4_nohat::precache();
|
character\c_zom_zombie_buried_civilian4_nohat::precache();
|
||||||
|
@ -370,8 +370,8 @@ main()
|
|||||||
self.team = "axis";
|
self.team = "axis";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
randchar = codescripts\character::get_random_character( 4 );
|
randchar = codescripts\character::get_random_character( 4 );
|
||||||
|
|
||||||
switch ( randchar )
|
switch ( randchar )
|
||||||
@ -390,18 +390,18 @@ main()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
self setcharacterindex( randchar );
|
self sys::setcharacterindex( randchar );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "axis" );
|
self sys::setspawnerteam( "axis" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_buried_basic" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_buried_basic" );
|
||||||
character\c_zom_zombie_buried_civilian5::precache();
|
character\c_zom_zombie_buried_civilian5::precache();
|
||||||
character\c_zom_zombie_buried_civilian5_nohat::precache();
|
character\c_zom_zombie_buried_civilian5_nohat::precache();
|
||||||
character\c_zom_zombie_buried_civilian5_nohat::precache();
|
character\c_zom_zombie_buried_civilian5_nohat::precache();
|
||||||
|
@ -368,20 +368,20 @@ main()
|
|||||||
self.team = "axis";
|
self.team = "axis";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
character\c_zom_zombie_buried_miner1::main();
|
character\c_zom_zombie_buried_miner1::main();
|
||||||
self setcharacterindex( 0 );
|
self sys::setcharacterindex( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "axis" );
|
self sys::setspawnerteam( "axis" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_buried_basic" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_buried_basic" );
|
||||||
character\c_zom_zombie_buried_miner1::precache();
|
character\c_zom_zombie_buried_miner1::precache();
|
||||||
}
|
}
|
||||||
|
@ -370,8 +370,8 @@ main()
|
|||||||
self.team = "axis";
|
self.team = "axis";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
randchar = codescripts\character::get_random_character( 3 );
|
randchar = codescripts\character::get_random_character( 3 );
|
||||||
|
|
||||||
switch ( randchar )
|
switch ( randchar )
|
||||||
@ -387,18 +387,18 @@ main()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
self setcharacterindex( randchar );
|
self sys::setcharacterindex( randchar );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "axis" );
|
self sys::setspawnerteam( "axis" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_buried_basic" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_buried_basic" );
|
||||||
character\c_zom_zombie_buried_miner2::precache();
|
character\c_zom_zombie_buried_miner2::precache();
|
||||||
character\c_zom_zombie_buried_miner2_nohat::precache();
|
character\c_zom_zombie_buried_miner2_nohat::precache();
|
||||||
character\c_zom_zombie_buried_miner2_nohat::precache();
|
character\c_zom_zombie_buried_miner2_nohat::precache();
|
||||||
|
@ -370,8 +370,8 @@ main()
|
|||||||
self.team = "axis";
|
self.team = "axis";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
randchar = codescripts\character::get_random_character( 3 );
|
randchar = codescripts\character::get_random_character( 3 );
|
||||||
|
|
||||||
switch ( randchar )
|
switch ( randchar )
|
||||||
@ -387,18 +387,18 @@ main()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
self setcharacterindex( randchar );
|
self sys::setcharacterindex( randchar );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "axis" );
|
self sys::setspawnerteam( "axis" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_buried_basic" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_buried_basic" );
|
||||||
character\c_zom_zombie_buried_miner3::precache();
|
character\c_zom_zombie_buried_miner3::precache();
|
||||||
character\c_zom_zombie_buried_miner3_nohat::precache();
|
character\c_zom_zombie_buried_miner3_nohat::precache();
|
||||||
character\c_zom_zombie_buried_miner3_nohat::precache();
|
character\c_zom_zombie_buried_miner3_nohat::precache();
|
||||||
|
@ -789,8 +789,8 @@ main()
|
|||||||
self.team = "axis";
|
self.team = "axis";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
randchar = codescripts\character::get_random_character( 3 );
|
randchar = codescripts\character::get_random_character( 3 );
|
||||||
|
|
||||||
switch ( randchar )
|
switch ( randchar )
|
||||||
@ -806,18 +806,18 @@ main()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
self setcharacterindex( randchar );
|
self sys::setcharacterindex( randchar );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "axis" );
|
self sys::setspawnerteam( "axis" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_all_basic" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_all_basic" );
|
||||||
character\c_zom_zombie_buried_saloongirl1::precache();
|
character\c_zom_zombie_buried_saloongirl1::precache();
|
||||||
character\c_zom_zombie_buried_saloongirl2::precache();
|
character\c_zom_zombie_buried_saloongirl2::precache();
|
||||||
character\c_zom_zombie_buried_saloongirl3::precache();
|
character\c_zom_zombie_buried_saloongirl3::precache();
|
||||||
|
@ -67,20 +67,20 @@ main()
|
|||||||
self.team = "axis";
|
self.team = "axis";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
character\c_zom_zombie_buried_ghost_woman::main();
|
character\c_zom_zombie_buried_ghost_woman::main();
|
||||||
self setcharacterindex( 0 );
|
self sys::setcharacterindex( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "axis" );
|
self sys::setspawnerteam( "axis" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_buried_ghost" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_buried_ghost" );
|
||||||
character\c_zom_zombie_buried_ghost_woman::precache();
|
character\c_zom_zombie_buried_ghost_woman::precache();
|
||||||
}
|
}
|
||||||
|
@ -159,20 +159,20 @@ main()
|
|||||||
self.team = "axis";
|
self.team = "axis";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
character\c_zom_buried_sloth::main();
|
character\c_zom_buried_sloth::main();
|
||||||
self setcharacterindex( 0 );
|
self sys::setcharacterindex( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "axis" );
|
self sys::setspawnerteam( "axis" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_buried_sloth" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_buried_sloth" );
|
||||||
character\c_zom_buried_sloth::precache();
|
character\c_zom_buried_sloth::precache();
|
||||||
}
|
}
|
||||||
|
@ -792,8 +792,8 @@ main()
|
|||||||
self.team = "axis";
|
self.team = "axis";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
randchar = codescripts\character::get_random_character( 6 );
|
randchar = codescripts\character::get_random_character( 6 );
|
||||||
|
|
||||||
switch ( randchar )
|
switch ( randchar )
|
||||||
@ -818,18 +818,18 @@ main()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
self setcharacterindex( randchar );
|
self sys::setcharacterindex( randchar );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "axis" );
|
self sys::setspawnerteam( "axis" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_all_basic" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_all_basic" );
|
||||||
character\c_zom_zombie_civ_shorts::precache();
|
character\c_zom_zombie_civ_shorts::precache();
|
||||||
character\c_zom_zombie_civ_shorts2::precache();
|
character\c_zom_zombie_civ_shorts2::precache();
|
||||||
character\c_zom_zombie_civ_shorts3::precache();
|
character\c_zom_zombie_civ_shorts3::precache();
|
||||||
|
@ -386,20 +386,20 @@ main()
|
|||||||
self.team = "axis";
|
self.team = "axis";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
character\c_zom_zombie_scientist::main();
|
character\c_zom_zombie_scientist::main();
|
||||||
self setcharacterindex( 0 );
|
self sys::setcharacterindex( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "axis" );
|
self sys::setspawnerteam( "axis" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_highrise_basic" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_highrise_basic" );
|
||||||
character\c_zom_zombie_scientist::precache();
|
character\c_zom_zombie_scientist::precache();
|
||||||
}
|
}
|
||||||
|
@ -386,20 +386,20 @@ main()
|
|||||||
self.team = "axis";
|
self.team = "axis";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
character\c_zom_zombie_soldier::main();
|
character\c_zom_zombie_soldier::main();
|
||||||
self setcharacterindex( 0 );
|
self sys::setcharacterindex( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "axis" );
|
self sys::setspawnerteam( "axis" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_highrise_basic" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_highrise_basic" );
|
||||||
character\c_zom_zombie_soldier::precache();
|
character\c_zom_zombie_soldier::precache();
|
||||||
}
|
}
|
||||||
|
@ -183,20 +183,20 @@ main()
|
|||||||
self.team = "axis";
|
self.team = "axis";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
character\c_zom_leaper::main();
|
character\c_zom_leaper::main();
|
||||||
self setcharacterindex( 0 );
|
self sys::setcharacterindex( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "axis" );
|
self sys::setspawnerteam( "axis" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_highrise_leaper" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_highrise_leaper" );
|
||||||
character\c_zom_leaper::precache();
|
character\c_zom_leaper::precache();
|
||||||
}
|
}
|
||||||
|
@ -788,8 +788,8 @@ main()
|
|||||||
self.team = "axis";
|
self.team = "axis";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
randchar = codescripts\character::get_random_character( 2 );
|
randchar = codescripts\character::get_random_character( 2 );
|
||||||
|
|
||||||
switch ( randchar )
|
switch ( randchar )
|
||||||
@ -802,18 +802,18 @@ main()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
self setcharacterindex( randchar );
|
self sys::setcharacterindex( randchar );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "axis" );
|
self sys::setspawnerteam( "axis" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_all_basic" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_all_basic" );
|
||||||
character\c_zom_dlc0_zombie_hazmat_1::precache();
|
character\c_zom_dlc0_zombie_hazmat_1::precache();
|
||||||
character\c_zom_dlc0_zombie_hazmat_2::precache();
|
character\c_zom_dlc0_zombie_hazmat_2::precache();
|
||||||
}
|
}
|
||||||
|
@ -788,8 +788,8 @@ main()
|
|||||||
self.team = "axis";
|
self.team = "axis";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
randchar = codescripts\character::get_random_character( 2 );
|
randchar = codescripts\character::get_random_character( 2 );
|
||||||
|
|
||||||
switch ( randchar )
|
switch ( randchar )
|
||||||
@ -802,18 +802,18 @@ main()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
self setcharacterindex( randchar );
|
self sys::setcharacterindex( randchar );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "axis" );
|
self sys::setspawnerteam( "axis" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_all_basic" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_all_basic" );
|
||||||
character\c_zom_dlc0_zombie_hazmat_1_beyes::precache();
|
character\c_zom_dlc0_zombie_hazmat_1_beyes::precache();
|
||||||
character\c_zom_dlc0_zombie_hazmat_2_beyes::precache();
|
character\c_zom_dlc0_zombie_hazmat_2_beyes::precache();
|
||||||
}
|
}
|
||||||
|
@ -788,8 +788,8 @@ main()
|
|||||||
self.team = "axis";
|
self.team = "axis";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
randchar = codescripts\character::get_random_character( 2 );
|
randchar = codescripts\character::get_random_character( 2 );
|
||||||
|
|
||||||
switch ( randchar )
|
switch ( randchar )
|
||||||
@ -802,18 +802,18 @@ main()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
self setcharacterindex( randchar );
|
self sys::setcharacterindex( randchar );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "axis" );
|
self sys::setspawnerteam( "axis" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_all_basic" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_all_basic" );
|
||||||
character\c_zom_dlc0_zombie_soldier_1::precache();
|
character\c_zom_dlc0_zombie_soldier_1::precache();
|
||||||
character\c_zom_dlc0_zombie_soldier_civ_1::precache();
|
character\c_zom_dlc0_zombie_soldier_civ_1::precache();
|
||||||
}
|
}
|
||||||
|
@ -788,8 +788,8 @@ main()
|
|||||||
self.team = "axis";
|
self.team = "axis";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
randchar = codescripts\character::get_random_character( 2 );
|
randchar = codescripts\character::get_random_character( 2 );
|
||||||
|
|
||||||
switch ( randchar )
|
switch ( randchar )
|
||||||
@ -802,18 +802,18 @@ main()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
self setcharacterindex( randchar );
|
self sys::setcharacterindex( randchar );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "axis" );
|
self sys::setspawnerteam( "axis" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_all_basic" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_all_basic" );
|
||||||
character\c_zom_dlc0_zombie_soldier_1_beyes::precache();
|
character\c_zom_dlc0_zombie_soldier_1_beyes::precache();
|
||||||
character\c_zom_dlc0_zombie_soldier_civ_1_beyes::precache();
|
character\c_zom_dlc0_zombie_soldier_civ_1_beyes::precache();
|
||||||
}
|
}
|
||||||
|
@ -65,8 +65,8 @@ main()
|
|||||||
self.team = "axis";
|
self.team = "axis";
|
||||||
self.type = "zombie_dog";
|
self.type = "zombie_dog";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 256.0, 0.0 );
|
self sys::setengagementmindist( 256.0, 0.0 );
|
||||||
self setengagementmaxdist( 768.0, 1024.0 );
|
self sys::setengagementmaxdist( 768.0, 1024.0 );
|
||||||
randchar = codescripts\character::get_random_character( 2 );
|
randchar = codescripts\character::get_random_character( 2 );
|
||||||
|
|
||||||
switch ( randchar )
|
switch ( randchar )
|
||||||
@ -79,18 +79,18 @@ main()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
self setcharacterindex( randchar );
|
self sys::setcharacterindex( randchar );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "axis" );
|
self sys::setspawnerteam( "axis" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_nuked_dog" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_nuked_dog" );
|
||||||
character\character_sp_zombie_dog::precache();
|
character\character_sp_zombie_dog::precache();
|
||||||
character\character_sp_zombie_dog::precache();
|
character\character_sp_zombie_dog::precache();
|
||||||
}
|
}
|
||||||
|
@ -376,8 +376,8 @@ main()
|
|||||||
self.team = "axis";
|
self.team = "axis";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
randchar = codescripts\character::get_random_character( 6 );
|
randchar = codescripts\character::get_random_character( 6 );
|
||||||
|
|
||||||
switch ( randchar )
|
switch ( randchar )
|
||||||
@ -402,18 +402,18 @@ main()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
self setcharacterindex( randchar );
|
self sys::setcharacterindex( randchar );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "axis" );
|
self sys::setspawnerteam( "axis" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_tomb_basic" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_tomb_basic" );
|
||||||
character\c_zom_tomb_crusader_1a::precache();
|
character\c_zom_tomb_crusader_1a::precache();
|
||||||
character\c_zom_tomb_crusader_1a_nohat::precache();
|
character\c_zom_tomb_crusader_1a_nohat::precache();
|
||||||
character\c_zom_tomb_crusader_2b::precache();
|
character\c_zom_tomb_crusader_2b::precache();
|
||||||
|
@ -791,8 +791,8 @@ main()
|
|||||||
self.team = "axis";
|
self.team = "axis";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
randchar = codescripts\character::get_random_character( 6 );
|
randchar = codescripts\character::get_random_character( 6 );
|
||||||
|
|
||||||
switch ( randchar )
|
switch ( randchar )
|
||||||
@ -817,18 +817,18 @@ main()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
self setcharacterindex( randchar );
|
self sys::setcharacterindex( randchar );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "axis" );
|
self sys::setspawnerteam( "axis" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_all_basic" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_all_basic" );
|
||||||
character\c_zom_tomb_german_1a::precache();
|
character\c_zom_tomb_german_1a::precache();
|
||||||
character\c_zom_tomb_german_1a_nohat::precache();
|
character\c_zom_tomb_german_1a_nohat::precache();
|
||||||
character\c_zom_tomb_german_2b::precache();
|
character\c_zom_tomb_german_2b::precache();
|
||||||
|
@ -375,8 +375,8 @@ main()
|
|||||||
self.team = "axis";
|
self.team = "axis";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
randchar = codescripts\character::get_random_character( 6 );
|
randchar = codescripts\character::get_random_character( 6 );
|
||||||
|
|
||||||
switch ( randchar )
|
switch ( randchar )
|
||||||
@ -401,18 +401,18 @@ main()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
self setcharacterindex( randchar );
|
self sys::setcharacterindex( randchar );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "axis" );
|
self sys::setspawnerteam( "axis" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_tomb_basic" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_tomb_basic" );
|
||||||
character\c_zom_tomb_german_2b_nohat::precache();
|
character\c_zom_tomb_german_2b_nohat::precache();
|
||||||
character\c_zom_tomb_german_3c::precache();
|
character\c_zom_tomb_german_3c::precache();
|
||||||
character\c_zom_tomb_german_3c_nohat::precache();
|
character\c_zom_tomb_german_3c_nohat::precache();
|
||||||
|
@ -370,20 +370,20 @@ main()
|
|||||||
self.team = "axis";
|
self.team = "axis";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
character\c_zom_tomb_crusader_zc::main();
|
character\c_zom_tomb_crusader_zc::main();
|
||||||
self setcharacterindex( 0 );
|
self sys::setcharacterindex( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "axis" );
|
self sys::setspawnerteam( "axis" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_tomb_basic" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_tomb_basic" );
|
||||||
character\c_zom_tomb_crusader_zc::precache();
|
character\c_zom_tomb_crusader_zc::precache();
|
||||||
}
|
}
|
||||||
|
@ -46,20 +46,20 @@ main()
|
|||||||
self.team = "neutral";
|
self.team = "neutral";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
character\c_zom_giant_robot::main();
|
character\c_zom_giant_robot::main();
|
||||||
self setcharacterindex( 0 );
|
self sys::setcharacterindex( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "neutral" );
|
self sys::setspawnerteam( "neutral" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_tomb_giant_robot" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_tomb_giant_robot" );
|
||||||
character\c_zom_giant_robot::precache();
|
character\c_zom_giant_robot::precache();
|
||||||
}
|
}
|
||||||
|
@ -46,20 +46,20 @@ main()
|
|||||||
self.team = "neutral";
|
self.team = "neutral";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
character\c_zom_giant_robot_0::main();
|
character\c_zom_giant_robot_0::main();
|
||||||
self setcharacterindex( 0 );
|
self sys::setcharacterindex( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "neutral" );
|
self sys::setspawnerteam( "neutral" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_tomb_giant_robot" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_tomb_giant_robot" );
|
||||||
character\c_zom_giant_robot_0::precache();
|
character\c_zom_giant_robot_0::precache();
|
||||||
}
|
}
|
||||||
|
@ -46,20 +46,20 @@ main()
|
|||||||
self.team = "neutral";
|
self.team = "neutral";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
character\c_zom_giant_robot_1::main();
|
character\c_zom_giant_robot_1::main();
|
||||||
self setcharacterindex( 0 );
|
self sys::setcharacterindex( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "neutral" );
|
self sys::setspawnerteam( "neutral" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_tomb_giant_robot" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_tomb_giant_robot" );
|
||||||
character\c_zom_giant_robot_1::precache();
|
character\c_zom_giant_robot_1::precache();
|
||||||
}
|
}
|
||||||
|
@ -46,20 +46,20 @@ main()
|
|||||||
self.team = "neutral";
|
self.team = "neutral";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
character\c_zom_giant_robot_2::main();
|
character\c_zom_giant_robot_2::main();
|
||||||
self setcharacterindex( 0 );
|
self sys::setcharacterindex( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "neutral" );
|
self sys::setspawnerteam( "neutral" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_tomb_giant_robot" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_tomb_giant_robot" );
|
||||||
character\c_zom_giant_robot_2::precache();
|
character\c_zom_giant_robot_2::precache();
|
||||||
}
|
}
|
||||||
|
@ -106,20 +106,20 @@ main()
|
|||||||
self.team = "axis";
|
self.team = "axis";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
character\c_zom_dlc_mech::main();
|
character\c_zom_dlc_mech::main();
|
||||||
self setcharacterindex( 0 );
|
self sys::setcharacterindex( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "axis" );
|
self sys::setspawnerteam( "axis" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_tomb_mechz" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_tomb_mechz" );
|
||||||
character\c_zom_dlc_mech::precache();
|
character\c_zom_dlc_mech::precache();
|
||||||
}
|
}
|
||||||
|
@ -102,20 +102,20 @@ main()
|
|||||||
self.team = "axis";
|
self.team = "axis";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
character\c_zom_avogadro::main();
|
character\c_zom_avogadro::main();
|
||||||
self setcharacterindex( 0 );
|
self sys::setcharacterindex( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "axis" );
|
self sys::setspawnerteam( "axis" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_transit_avogadro" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_transit_avogadro" );
|
||||||
character\c_zom_avogadro::precache();
|
character\c_zom_avogadro::precache();
|
||||||
}
|
}
|
||||||
|
@ -788,8 +788,8 @@ main()
|
|||||||
self.team = "axis";
|
self.team = "axis";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
randchar = codescripts\character::get_random_character( 2 );
|
randchar = codescripts\character::get_random_character( 2 );
|
||||||
|
|
||||||
switch ( randchar )
|
switch ( randchar )
|
||||||
@ -802,18 +802,18 @@ main()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
self setcharacterindex( randchar );
|
self sys::setcharacterindex( randchar );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "axis" );
|
self sys::setspawnerteam( "axis" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_all_basic" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_all_basic" );
|
||||||
character\c_zom_zombie1_01::precache();
|
character\c_zom_zombie1_01::precache();
|
||||||
character\c_zom_zombie1_02::precache();
|
character\c_zom_zombie1_02::precache();
|
||||||
}
|
}
|
||||||
|
@ -466,8 +466,8 @@ main()
|
|||||||
self.team = "axis";
|
self.team = "axis";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
randchar = codescripts\character::get_random_character( 3 );
|
randchar = codescripts\character::get_random_character( 3 );
|
||||||
|
|
||||||
switch ( randchar )
|
switch ( randchar )
|
||||||
@ -483,18 +483,18 @@ main()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
self setcharacterindex( randchar );
|
self sys::setcharacterindex( randchar );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "axis" );
|
self sys::setspawnerteam( "axis" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_transit_basic" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_transit_basic" );
|
||||||
character\c_zom_zombie2_01::precache();
|
character\c_zom_zombie2_01::precache();
|
||||||
character\c_zom_zombie2_02::precache();
|
character\c_zom_zombie2_02::precache();
|
||||||
character\c_zom_zombie2_03::precache();
|
character\c_zom_zombie2_03::precache();
|
||||||
|
@ -468,8 +468,8 @@ main()
|
|||||||
self.team = "axis";
|
self.team = "axis";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
randchar = codescripts\character::get_random_character( 5 );
|
randchar = codescripts\character::get_random_character( 5 );
|
||||||
|
|
||||||
switch ( randchar )
|
switch ( randchar )
|
||||||
@ -491,18 +491,18 @@ main()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
self setcharacterindex( randchar );
|
self sys::setcharacterindex( randchar );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "axis" );
|
self sys::setspawnerteam( "axis" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_transit_basic" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_transit_basic" );
|
||||||
character\c_zom_zombie3_01::precache();
|
character\c_zom_zombie3_01::precache();
|
||||||
character\c_zom_zombie3_02::precache();
|
character\c_zom_zombie3_02::precache();
|
||||||
character\c_zom_zombie3_03::precache();
|
character\c_zom_zombie3_03::precache();
|
||||||
|
@ -466,8 +466,8 @@ main()
|
|||||||
self.team = "axis";
|
self.team = "axis";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
randchar = codescripts\character::get_random_character( 3 );
|
randchar = codescripts\character::get_random_character( 3 );
|
||||||
|
|
||||||
switch ( randchar )
|
switch ( randchar )
|
||||||
@ -483,18 +483,18 @@ main()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
self setcharacterindex( randchar );
|
self sys::setcharacterindex( randchar );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "axis" );
|
self sys::setspawnerteam( "axis" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_transit_basic" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_transit_basic" );
|
||||||
character\c_zom_zombie5_01::precache();
|
character\c_zom_zombie5_01::precache();
|
||||||
character\c_zom_zombie5_02::precache();
|
character\c_zom_zombie5_02::precache();
|
||||||
character\c_zom_zombie5_03::precache();
|
character\c_zom_zombie5_03::precache();
|
||||||
|
@ -466,8 +466,8 @@ main()
|
|||||||
self.team = "axis";
|
self.team = "axis";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
randchar = codescripts\character::get_random_character( 3 );
|
randchar = codescripts\character::get_random_character( 3 );
|
||||||
|
|
||||||
switch ( randchar )
|
switch ( randchar )
|
||||||
@ -483,18 +483,18 @@ main()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
self setcharacterindex( randchar );
|
self sys::setcharacterindex( randchar );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "axis" );
|
self sys::setspawnerteam( "axis" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_transit_basic" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_transit_basic" );
|
||||||
character\c_zom_zombie8_01::precache();
|
character\c_zom_zombie8_01::precache();
|
||||||
character\c_zom_zombie8_02::precache();
|
character\c_zom_zombie8_02::precache();
|
||||||
character\c_zom_zombie8_03::precache();
|
character\c_zom_zombie8_03::precache();
|
||||||
|
@ -466,8 +466,8 @@ main()
|
|||||||
self.team = "axis";
|
self.team = "axis";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
randchar = codescripts\character::get_random_character( 3 );
|
randchar = codescripts\character::get_random_character( 3 );
|
||||||
|
|
||||||
switch ( randchar )
|
switch ( randchar )
|
||||||
@ -483,18 +483,18 @@ main()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
self setcharacterindex( randchar );
|
self sys::setcharacterindex( randchar );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "axis" );
|
self sys::setspawnerteam( "axis" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_transit_basic" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_transit_basic" );
|
||||||
character\c_zom_zombie9_01::precache();
|
character\c_zom_zombie9_01::precache();
|
||||||
character\c_zom_zombie9_02::precache();
|
character\c_zom_zombie9_02::precache();
|
||||||
character\c_zom_zombie9_03::precache();
|
character\c_zom_zombie9_03::precache();
|
||||||
|
@ -59,20 +59,20 @@ main()
|
|||||||
self.team = "axis";
|
self.team = "axis";
|
||||||
self.type = "zombie";
|
self.type = "zombie";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 0.0, 0.0 );
|
self sys::setengagementmindist( 0.0, 0.0 );
|
||||||
self setengagementmaxdist( 100.0, 300.0 );
|
self sys::setengagementmaxdist( 100.0, 300.0 );
|
||||||
character\c_zom_screecher::main();
|
character\c_zom_screecher::main();
|
||||||
self setcharacterindex( 0 );
|
self sys::setcharacterindex( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "axis" );
|
self sys::setspawnerteam( "axis" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_transit_screecher" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_transit_screecher" );
|
||||||
character\c_zom_screecher::precache();
|
character\c_zom_screecher::precache();
|
||||||
}
|
}
|
||||||
|
@ -68,8 +68,8 @@ main()
|
|||||||
self.team = "axis";
|
self.team = "axis";
|
||||||
self.type = "zombie_dog";
|
self.type = "zombie_dog";
|
||||||
self.weapon = "";
|
self.weapon = "";
|
||||||
self setengagementmindist( 256.0, 0.0 );
|
self sys::setengagementmindist( 256.0, 0.0 );
|
||||||
self setengagementmaxdist( 768.0, 1024.0 );
|
self sys::setengagementmaxdist( 768.0, 1024.0 );
|
||||||
randchar = codescripts\character::get_random_character( 2 );
|
randchar = codescripts\character::get_random_character( 2 );
|
||||||
|
|
||||||
switch ( randchar )
|
switch ( randchar )
|
||||||
@ -82,18 +82,18 @@ main()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
self setcharacterindex( randchar );
|
self sys::setcharacterindex( randchar );
|
||||||
}
|
}
|
||||||
|
|
||||||
spawner()
|
spawner()
|
||||||
{
|
{
|
||||||
self setspawnerteam( "axis" );
|
self sys::setspawnerteam( "axis" );
|
||||||
}
|
}
|
||||||
|
|
||||||
precache( ai_index )
|
precache( ai_index )
|
||||||
{
|
{
|
||||||
level thread reference_anims_from_animtree();
|
level thread reference_anims_from_animtree();
|
||||||
precacheanimstatedef( ai_index, #animtree, "zm_transit_dog" );
|
sys::precacheanimstatedef( ai_index, #animtree, "zm_transit_dog" );
|
||||||
character\character_sp_zombie_dog::precache();
|
character\character_sp_zombie_dog::precache();
|
||||||
character\character_sp_zombie_dog::precache();
|
character\character_sp_zombie_dog::precache();
|
||||||
}
|
}
|
||||||
|
@ -54747,3 +54747,196 @@
|
|||||||
"angles" "0 0 0"
|
"angles" "0 0 0"
|
||||||
"script_string" "zclassic_transit zstandard_farm zgrief_farm"
|
"script_string" "zclassic_transit zstandard_farm zgrief_farm"
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
"classname" "actor_zm_alcatraz_brutus"
|
||||||
|
"model" "c_zom_cellbreaker_fb"
|
||||||
|
"export" "2"
|
||||||
|
"angles" "0 180 0"
|
||||||
|
"spawnflags" "3"
|
||||||
|
"script_noteworthy" "brutus_zombie_spawner"
|
||||||
|
"origin" "100 100 -500"
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"targetname" "zone_tow_spawners"
|
||||||
|
"script_noteworthy" "brutus_location"
|
||||||
|
"origin" "1382.76 -489.104 -67.875"
|
||||||
|
"classname" "script_struct"
|
||||||
|
"angles" "0 0 0"
|
||||||
|
"script_string" "zclassic_town zstandard_town zgrief_town"
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"targetname" "zone_tow_spawners"
|
||||||
|
"script_noteworthy" "brutus_location"
|
||||||
|
"origin" "1126.05 -502.775 -61.875"
|
||||||
|
"classname" "script_struct"
|
||||||
|
"angles" "0 0 0"
|
||||||
|
"script_string" "zclassic_town zstandard_town zgrief_town"
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"targetname" "zone_town_south_spawners"
|
||||||
|
"script_noteworthy" "brutus_location"
|
||||||
|
"origin" "1925.02 -1474.78 -56.3992"
|
||||||
|
"classname" "script_struct"
|
||||||
|
"angles" "0 0 0"
|
||||||
|
"script_string" "zclassic_town zstandard_town zgrief_town"
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"targetname" "zone_town_south_spawners"
|
||||||
|
"script_noteworthy" "brutus_location"
|
||||||
|
"origin" "959.013 -1474.86 -47.088"
|
||||||
|
"classname" "script_struct"
|
||||||
|
"angles" "0 0 0"
|
||||||
|
"script_string" "zclassic_town zstandard_town zgrief_town"
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"targetname" "zone_town_barber_spawners"
|
||||||
|
"script_noteworthy" "brutus_location"
|
||||||
|
"origin" "968.193 -911.043 120.125"
|
||||||
|
"classname" "script_struct"
|
||||||
|
"angles" "0 0 0"
|
||||||
|
"script_string" "zclassic_town zstandard_town zgrief_town"
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"targetname" "zone_town_north_spawners"
|
||||||
|
"script_noteworthy" "brutus_location"
|
||||||
|
"origin" "1530.97 750.57 -61.875"
|
||||||
|
"classname" "script_struct"
|
||||||
|
"angles" "0 0 0"
|
||||||
|
"script_string" "zclassic_town zstandard_town zgrief_town"
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"targetname" "zone_ban_spawners"
|
||||||
|
"script_noteworthy" "brutus_location"
|
||||||
|
"origin" "982.982 447.794 -39.875"
|
||||||
|
"classname" "script_struct"
|
||||||
|
"angles" "0 0 0"
|
||||||
|
"script_string" "zclassic_town zstandard_town zgrief_town"
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"targetname" "zone_bar_spawners"
|
||||||
|
"script_noteworthy" "brutus_location"
|
||||||
|
"origin" "2118.19 343.046 -55.875"
|
||||||
|
"classname" "script_struct"
|
||||||
|
"angles" "0 0 0"
|
||||||
|
"script_string" "zclassic_town zstandard_town zgrief_town"
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"targetname" "zone_bar_spawners"
|
||||||
|
"script_noteworthy" "brutus_location"
|
||||||
|
"origin" "2114.55 29.5759 88.125"
|
||||||
|
"classname" "script_struct"
|
||||||
|
"angles" "0 0 0"
|
||||||
|
"script_string" "zclassic_town zstandard_town zgrief_town"
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"targetname" "zone_town_east_spawners"
|
||||||
|
"script_noteworthy" "brutus_location"
|
||||||
|
"origin" "2333.71 -665.085 -55.875"
|
||||||
|
"classname" "script_struct"
|
||||||
|
"angles" "0 0 0"
|
||||||
|
"script_string" "zclassic_town zstandard_town zgrief_town"
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"targetname" "zone_tow_spawners"
|
||||||
|
"script_noteworthy" "brutus_location"
|
||||||
|
"origin" "1332.75 185.541 -69.875"
|
||||||
|
"classname" "script_struct"
|
||||||
|
"angles" "0 0 0"
|
||||||
|
"script_string" "zclassic_town zstandard_town zgrief_town"
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"targetname" "zone_pri_spawners"
|
||||||
|
"script_noteworthy" "brutus_location"
|
||||||
|
"origin" "-6834.19 5264.24 -58.2852"
|
||||||
|
"classname" "script_struct"
|
||||||
|
"angles" "0 0 0"
|
||||||
|
"script_string" "zclassic_transit zstandard_transit zgrief_transit"
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"targetname" "zone_station_ext_spawners"
|
||||||
|
"script_noteworthy" "brutus_location"
|
||||||
|
"origin" "-6066.56 4846.77 -62.0586"
|
||||||
|
"classname" "script_struct"
|
||||||
|
"angles" "0 0 0"
|
||||||
|
"script_string" "zclassic_transit zstandard_transit zgrief_transit"
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"targetname" "zone_station_ext_spawners"
|
||||||
|
"script_noteworthy" "brutus_location"
|
||||||
|
"origin" "-6231.13 5459.16 -55.875"
|
||||||
|
"classname" "script_struct"
|
||||||
|
"angles" "0 0 0"
|
||||||
|
"script_string" "zclassic_transit zstandard_transit zgrief_transit"
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"targetname" "zone_station_ext_spawners"
|
||||||
|
"script_noteworthy" "brutus_location"
|
||||||
|
"origin" "-7059.45 4344.02 -63.875"
|
||||||
|
"classname" "script_struct"
|
||||||
|
"angles" "0 0 0"
|
||||||
|
"script_string" "zclassic_transit zstandard_transit zgrief_transit"
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"targetname" "zone_station_ext_spawners"
|
||||||
|
"script_noteworthy" "brutus_location"
|
||||||
|
"origin" "-7461.69 4402.73 -63.875"
|
||||||
|
"classname" "script_struct"
|
||||||
|
"angles" "0 0 0"
|
||||||
|
"script_string" "zclassic_transit zstandard_transit zgrief_transit"
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"targetname" "zone_trans_2b_spawners"
|
||||||
|
"script_noteworthy" "brutus_location"
|
||||||
|
"origin" "-7767.91 5305.2 -59.47"
|
||||||
|
"classname" "script_struct"
|
||||||
|
"angles" "0 0 0"
|
||||||
|
"script_string" "zclassic_transit zstandard_transit zgrief_transit"
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"targetname" "zone_far_ext_spawners"
|
||||||
|
"script_noteworthy" "brutus_location"
|
||||||
|
"origin" "7143.08 -5728.47 -46.6953"
|
||||||
|
"classname" "script_struct"
|
||||||
|
"angles" "0 0 0"
|
||||||
|
"script_string" "zclassic_farm zstandard_farm zgrief_farm"
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"targetname" "zone_brn_spawners"
|
||||||
|
"script_noteworthy" "brutus_location"
|
||||||
|
"origin" "7783.4 -5056.01 40.387"
|
||||||
|
"classname" "script_struct"
|
||||||
|
"angles" "0 0 0"
|
||||||
|
"script_string" "zclassic_farm zstandard_farm zgrief_farm"
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"targetname" "zone_brn_spawners"
|
||||||
|
"script_noteworthy" "brutus_location"
|
||||||
|
"origin" "8175.57 -5321.69 269.39"
|
||||||
|
"classname" "script_struct"
|
||||||
|
"angles" "0 0 0"
|
||||||
|
"script_string" "zclassic_farm zstandard_farm zgrief_farm"
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"targetname" "zone_far_ext_spawners"
|
||||||
|
"script_noteworthy" "brutus_location"
|
||||||
|
"origin" "8685.24 -5735.16 50.125"
|
||||||
|
"classname" "script_struct"
|
||||||
|
"angles" "0 0 0"
|
||||||
|
"script_string" "zclassic_farm zstandard_farm zgrief_farm"
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"targetname" "zone_farm_house_spawners"
|
||||||
|
"script_noteworthy" "brutus_location"
|
||||||
|
"origin" "8078.18 -6518.55 245.125"
|
||||||
|
"classname" "script_struct"
|
||||||
|
"angles" "0 0 0"
|
||||||
|
"script_string" "zclassic_farm zstandard_farm zgrief_farm"
|
||||||
|
}
|
||||||
|
{
|
||||||
|
"targetname" "zone_farm_house_spawners"
|
||||||
|
"script_noteworthy" "brutus_location"
|
||||||
|
"origin" "7929.28 -6417.91 117.125"
|
||||||
|
"classname" "script_struct"
|
||||||
|
"angles" "0 0 0"
|
||||||
|
"script_string" "zclassic_farm zstandard_farm zgrief_farm"
|
||||||
|
}
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
precache()
|
precache()
|
||||||
{
|
{
|
||||||
precacheshellshock( "electrocution" );
|
sys::precacheshellshock( "electrocution" );
|
||||||
/#
|
/#
|
||||||
precachemodel( "fx_axis_createfx" );
|
precachemodel( "fx_axis_createfx" );
|
||||||
#/
|
#/
|
||||||
@ -24,15 +24,15 @@ precache()
|
|||||||
|
|
||||||
precache_fx()
|
precache_fx()
|
||||||
{
|
{
|
||||||
level._effect["avogadro_bolt"] = loadfx( "maps/zombie/fx_zombie_tesla_bolt_secondary" );
|
level._effect["avogadro_bolt"] = sys::loadfx( "maps/zombie/fx_zombie_tesla_bolt_secondary" );
|
||||||
level._effect["avogadro_ascend"] = loadfx( "maps/zombie/fx_zmb_avog_ascend" );
|
level._effect["avogadro_ascend"] = sys::loadfx( "maps/zombie/fx_zmb_avog_ascend" );
|
||||||
level._effect["avogadro_ascend_aerial"] = loadfx( "maps/zombie/fx_zmb_avog_ascend_aerial" );
|
level._effect["avogadro_ascend_aerial"] = sys::loadfx( "maps/zombie/fx_zmb_avog_ascend_aerial" );
|
||||||
level._effect["avogadro_descend"] = loadfx( "maps/zombie/fx_zmb_avog_descend" );
|
level._effect["avogadro_descend"] = sys::loadfx( "maps/zombie/fx_zmb_avog_descend" );
|
||||||
level._effect["avogadro_phase_trail"] = loadfx( "maps/zombie/fx_zmb_avog_phase_trail" );
|
level._effect["avogadro_phase_trail"] = sys::loadfx( "maps/zombie/fx_zmb_avog_phase_trail" );
|
||||||
level._effect["avogadro_phasing"] = loadfx( "maps/zombie/fx_zmb_avog_phasing" );
|
level._effect["avogadro_phasing"] = sys::loadfx( "maps/zombie/fx_zmb_avog_phasing" );
|
||||||
level._effect["avogadro_health_full"] = loadfx( "maps/zombie/fx_zmb_avog_health_full" );
|
level._effect["avogadro_health_full"] = sys::loadfx( "maps/zombie/fx_zmb_avog_health_full" );
|
||||||
level._effect["avogadro_health_half"] = loadfx( "maps/zombie/fx_zmb_avog_health_half" );
|
level._effect["avogadro_health_half"] = sys::loadfx( "maps/zombie/fx_zmb_avog_health_half" );
|
||||||
level._effect["avogadro_health_low"] = loadfx( "maps/zombie/fx_zmb_avog_health_low" );
|
level._effect["avogadro_health_low"] = sys::loadfx( "maps/zombie/fx_zmb_avog_health_low" );
|
||||||
}
|
}
|
||||||
|
|
||||||
main()
|
main()
|
||||||
@ -44,7 +44,7 @@ init()
|
|||||||
{
|
{
|
||||||
init_phase_anims();
|
init_phase_anims();
|
||||||
init_regions();
|
init_regions();
|
||||||
level.avogadro_spawners = getentarray( "avogadro_zombie_spawner", "script_noteworthy" );
|
level.avogadro_spawners = sys::getentarray( "avogadro_zombie_spawner", "script_noteworthy" );
|
||||||
array_thread( level.avogadro_spawners, ::add_spawn_function, maps\mp\zombies\_zm_ai_avogadro::avogadro_prespawn );
|
array_thread( level.avogadro_spawners, ::add_spawn_function, maps\mp\zombies\_zm_ai_avogadro::avogadro_prespawn );
|
||||||
level.zombie_ai_limit_avogadro = 1;
|
level.zombie_ai_limit_avogadro = 1;
|
||||||
|
|
||||||
@ -59,25 +59,25 @@ init()
|
|||||||
init_phase_anims()
|
init_phase_anims()
|
||||||
{
|
{
|
||||||
level.avogadro_phase = [];
|
level.avogadro_phase = [];
|
||||||
level.avogadro_phase[0] = spawnstruct();
|
level.avogadro_phase[0] = sys::spawnstruct();
|
||||||
level.avogadro_phase[0].animstate = "zm_teleport_forward";
|
level.avogadro_phase[0].animstate = "zm_teleport_forward";
|
||||||
level.avogadro_phase[1] = spawnstruct();
|
level.avogadro_phase[1] = sys::spawnstruct();
|
||||||
level.avogadro_phase[1].animstate = "zm_teleport_left";
|
level.avogadro_phase[1].animstate = "zm_teleport_left";
|
||||||
level.avogadro_phase[2] = spawnstruct();
|
level.avogadro_phase[2] = sys::spawnstruct();
|
||||||
level.avogadro_phase[2].animstate = "zm_teleport_right";
|
level.avogadro_phase[2].animstate = "zm_teleport_right";
|
||||||
level.avogadro_phase[3] = spawnstruct();
|
level.avogadro_phase[3] = sys::spawnstruct();
|
||||||
level.avogadro_phase[3].animstate = "zm_teleport_back";
|
level.avogadro_phase[3].animstate = "zm_teleport_back";
|
||||||
}
|
}
|
||||||
|
|
||||||
init_regions()
|
init_regions()
|
||||||
{
|
{
|
||||||
level.transit_region = [];
|
level.transit_region = [];
|
||||||
level.transit_region["bus"] = spawnstruct();
|
level.transit_region["bus"] = sys::spawnstruct();
|
||||||
level.transit_region["diner"] = spawnstruct();
|
level.transit_region["diner"] = sys::spawnstruct();
|
||||||
level.transit_region["farm"] = spawnstruct();
|
level.transit_region["farm"] = sys::spawnstruct();
|
||||||
level.transit_region["cornfield"] = spawnstruct();
|
level.transit_region["cornfield"] = sys::spawnstruct();
|
||||||
level.transit_region["power"] = spawnstruct();
|
level.transit_region["power"] = sys::spawnstruct();
|
||||||
level.transit_region["town"] = spawnstruct();
|
level.transit_region["town"] = sys::spawnstruct();
|
||||||
level.transit_region["bus"].zones = [];
|
level.transit_region["bus"].zones = [];
|
||||||
level.transit_region["bus"].zones[0] = "zone_pri";
|
level.transit_region["bus"].zones[0] = "zone_pri";
|
||||||
level.transit_region["bus"].zones[1] = "zone_station_ext";
|
level.transit_region["bus"].zones[1] = "zone_station_ext";
|
||||||
@ -148,7 +148,7 @@ avogadro_prespawn()
|
|||||||
self.ignore_solo_last_stand = 1;
|
self.ignore_solo_last_stand = 1;
|
||||||
self.ignore_riotshield = 1;
|
self.ignore_riotshield = 1;
|
||||||
self.allowpain = 0;
|
self.allowpain = 0;
|
||||||
self.core_model = getent( "core_model", "targetname" );
|
self.core_model = sys::getent( "core_model", "targetname" );
|
||||||
|
|
||||||
if ( isdefined( self.core_model ) )
|
if ( isdefined( self.core_model ) )
|
||||||
{
|
{
|
||||||
@ -159,20 +159,20 @@ avogadro_prespawn()
|
|||||||
}
|
}
|
||||||
|
|
||||||
self set_zombie_run_cycle( "walk" );
|
self set_zombie_run_cycle( "walk" );
|
||||||
self animmode( "normal" );
|
self sys::animmode( "normal" );
|
||||||
self orientmode( "face enemy" );
|
self sys::orientmode( "face enemy" );
|
||||||
self maps\mp\zombies\_zm_spawner::zombie_setup_attack_properties();
|
self maps\mp\zombies\_zm_spawner::zombie_setup_attack_properties();
|
||||||
self maps\mp\zombies\_zm_spawner::zombie_complete_emerging_into_playable_area();
|
self maps\mp\zombies\_zm_spawner::zombie_complete_emerging_into_playable_area();
|
||||||
self setfreecameralockonallowed( 0 );
|
self sys::setfreecameralockonallowed( 0 );
|
||||||
self.zmb_vocals_attack = "zmb_vocals_zombie_attack";
|
self.zmb_vocals_attack = "zmb_vocals_zombie_attack";
|
||||||
self.meleedamage = 5;
|
self.meleedamage = 5;
|
||||||
self.actor_damage_func = ::avogadro_damage_func;
|
self.actor_damage_func = ::avogadro_damage_func;
|
||||||
self.non_attacker_func = ::avogadro_non_attacker;
|
self.non_attacker_func = ::avogadro_non_attacker;
|
||||||
self.anchor = spawn( "script_origin", self.origin );
|
self.anchor = sys::spawn( "script_origin", self.origin );
|
||||||
self.anchor.angles = self.angles;
|
self.anchor.angles = self.angles;
|
||||||
self.phase_time = 0;
|
self.phase_time = 0;
|
||||||
self.audio_loop_ent = spawn( "script_origin", self.origin );
|
self.audio_loop_ent = sys::spawn( "script_origin", self.origin );
|
||||||
self.audio_loop_ent linkto( self, "tag_origin" );
|
self.audio_loop_ent sys::linkto( self, "tag_origin" );
|
||||||
self.hit_by_melee = 0;
|
self.hit_by_melee = 0;
|
||||||
self.damage_absorbed = 0;
|
self.damage_absorbed = 0;
|
||||||
self.ignoreall = 1;
|
self.ignoreall = 1;
|
||||||
@ -183,7 +183,7 @@ avogadro_prespawn()
|
|||||||
self.jetgun_drag_func = ::drag_avogadro;
|
self.jetgun_drag_func = ::drag_avogadro;
|
||||||
self.depot_lava_pit = ::busplowkillzombie;
|
self.depot_lava_pit = ::busplowkillzombie;
|
||||||
self.busplowkillzombie = ::busplowkillzombie;
|
self.busplowkillzombie = ::busplowkillzombie;
|
||||||
self.region_timer = gettime() + 500;
|
self.region_timer = sys::gettime() + 500;
|
||||||
self.shield = 1;
|
self.shield = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -198,7 +198,7 @@ avogadro_spawning_logic()
|
|||||||
if ( getdvarint( #"_id_FA81816F" ) == 2 || getdvarint( #"_id_FA81816F" ) >= 4 )
|
if ( getdvarint( #"_id_FA81816F" ) == 2 || getdvarint( #"_id_FA81816F" ) >= 4 )
|
||||||
return;
|
return;
|
||||||
#/
|
#/
|
||||||
spawner = getent( "avogadro_zombie_spawner", "script_noteworthy" );
|
spawner = sys::getent( "avogadro_zombie_spawner", "script_noteworthy" );
|
||||||
|
|
||||||
if ( !isdefined( spawner ) )
|
if ( !isdefined( spawner ) )
|
||||||
{
|
{
|
||||||
@ -219,10 +219,10 @@ avogadro_spawning_logic()
|
|||||||
}
|
}
|
||||||
|
|
||||||
ai waittill( "zombie_init_done" );
|
ai waittill( "zombie_init_done" );
|
||||||
core_mover = getent( "core_mover", "targetname" );
|
core_mover = sys::getent( "core_mover", "targetname" );
|
||||||
ai linkto( core_mover, "tag_origin" );
|
ai sys::linkto( core_mover, "tag_origin" );
|
||||||
ai.state = "chamber";
|
ai.state = "chamber";
|
||||||
ai setanimstatefromasd( "zm_chamber_idle" );
|
ai sys::setanimstatefromasd( "zm_chamber_idle" );
|
||||||
ai thread avogadro_think();
|
ai thread avogadro_think();
|
||||||
ai thread avogadro_bus_watcher();
|
ai thread avogadro_bus_watcher();
|
||||||
}
|
}
|
||||||
@ -268,7 +268,7 @@ avogadro_think()
|
|||||||
|
|
||||||
avogadro_bus_watcher()
|
avogadro_bus_watcher()
|
||||||
{
|
{
|
||||||
plow_trigger = getent( "trigger_plow", "targetname" );
|
plow_trigger = sys::getent( "trigger_plow", "targetname" );
|
||||||
|
|
||||||
while ( true )
|
while ( true )
|
||||||
{
|
{
|
||||||
@ -278,11 +278,11 @@ avogadro_bus_watcher()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( level.the_bus ) && ( isdefined( level.the_bus.ismoving ) && level.the_bus.ismoving ) && level.the_bus getspeedmph() > 5 )
|
if ( isdefined( level.the_bus ) && ( isdefined( level.the_bus.ismoving ) && level.the_bus.ismoving ) && level.the_bus sys::getspeedmph() > 5 )
|
||||||
{
|
{
|
||||||
if ( self istouching( plow_trigger ) )
|
if ( self sys::istouching( plow_trigger ) )
|
||||||
{
|
{
|
||||||
phase_node = getnode( "back_door_node", "targetname" );
|
phase_node = sys::getnode( "back_door_node", "targetname" );
|
||||||
self avogadro_teleport( phase_node.origin, phase_node.angles, 1 );
|
self avogadro_teleport( phase_node.origin, phase_node.angles, 1 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -296,17 +296,17 @@ busplowkillzombie()
|
|||||||
if ( isdefined( self.is_teleport ) && self.is_teleport )
|
if ( isdefined( self.is_teleport ) && self.is_teleport )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
phase_node = getnode( "back_door_node", "targetname" );
|
phase_node = sys::getnode( "back_door_node", "targetname" );
|
||||||
self avogadro_teleport( phase_node.origin, phase_node.angles, 1 );
|
self avogadro_teleport( phase_node.origin, phase_node.angles, 1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
phase_from_bus()
|
phase_from_bus()
|
||||||
{
|
{
|
||||||
self ghost();
|
self sys::ghost();
|
||||||
self notsolid();
|
self sys::notsolid();
|
||||||
wait 3;
|
wait 3;
|
||||||
self show();
|
self sys::show();
|
||||||
self solid();
|
self sys::solid();
|
||||||
self notify( "phase_from_bus_done" );
|
self notify( "phase_from_bus_done" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -316,28 +316,28 @@ wait_idle()
|
|||||||
if ( getdvarint( #"_id_CFA4158E" ) )
|
if ( getdvarint( #"_id_CFA4158E" ) )
|
||||||
{
|
{
|
||||||
self.state = "wait_for_player";
|
self.state = "wait_for_player";
|
||||||
self unlink();
|
self sys::unlink();
|
||||||
}
|
}
|
||||||
#/
|
#/
|
||||||
|
|
||||||
if ( flag( "power_on" ) )
|
if ( flag( "power_on" ) )
|
||||||
{
|
{
|
||||||
self.state = "wait_for_player";
|
self.state = "wait_for_player";
|
||||||
self unlink();
|
self sys::unlink();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
player_look()
|
player_look()
|
||||||
{
|
{
|
||||||
players = get_players();
|
players = sys::getplayers();
|
||||||
|
|
||||||
foreach ( player in players )
|
foreach ( player in players )
|
||||||
{
|
{
|
||||||
vec_enemy = self.origin - player.origin;
|
vec_enemy = self.origin - player.origin;
|
||||||
vec_facing = anglestoforward( player.angles );
|
vec_facing = anglestoforward( player.angles );
|
||||||
norm_facing = vectornormalize( vec_facing );
|
norm_facing = sys::vectornormalize( vec_facing );
|
||||||
norm_enemy = vectornormalize( vec_enemy );
|
norm_enemy = sys::vectornormalize( vec_enemy );
|
||||||
dot = vectordot( norm_facing, norm_enemy );
|
dot = sys::vectordot( norm_facing, norm_enemy );
|
||||||
|
|
||||||
if ( dot > 0.707 )
|
if ( dot > 0.707 )
|
||||||
{
|
{
|
||||||
@ -397,11 +397,11 @@ chase_bus()
|
|||||||
if ( !isdefined( self.chase_bus_entry ) )
|
if ( !isdefined( self.chase_bus_entry ) )
|
||||||
{
|
{
|
||||||
self.chase_bus_entry = opening;
|
self.chase_bus_entry = opening;
|
||||||
dist_curr = distance2dsquared( self.origin, level.the_bus gettagorigin( self.chase_bus_entry.tagname ) );
|
dist_curr = sys::distance2dsquared( self.origin, level.the_bus sys::gettagorigin( self.chase_bus_entry.tagname ) );
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
dist_next = distance2dsquared( self.origin, level.the_bus gettagorigin( opening.tagname ) );
|
dist_next = sys::distance2dsquared( self.origin, level.the_bus sys::gettagorigin( opening.tagname ) );
|
||||||
|
|
||||||
if ( dist_next < dist_curr )
|
if ( dist_next < dist_curr )
|
||||||
{
|
{
|
||||||
@ -424,26 +424,26 @@ chase_bus_update()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
tag_pos = level.the_bus gettagorigin( self.chase_bus_entry.tagname );
|
tag_pos = level.the_bus sys::gettagorigin( self.chase_bus_entry.tagname );
|
||||||
self setgoalpos( tag_pos );
|
self sys::setgoalpos( tag_pos );
|
||||||
|
|
||||||
if ( bus getspeedmph() > 5 )
|
if ( bus sys::getspeedmph() > 5 )
|
||||||
{
|
{
|
||||||
self.phase_state = level.avogadro_phase[0].animstate;
|
self.phase_state = level.avogadro_phase[0].animstate;
|
||||||
self.phase_substate = 0;
|
self.phase_substate = 0;
|
||||||
self setfreecameralockonallowed( 0 );
|
self sys::setfreecameralockonallowed( 0 );
|
||||||
self.ignoreall = 1;
|
self.ignoreall = 1;
|
||||||
self thread phase_failsafe();
|
self thread phase_failsafe();
|
||||||
self animcustom( ::play_phase_anim );
|
self sys::animcustom( ::play_phase_anim );
|
||||||
/#
|
/#
|
||||||
avogadro_print( "long phase after bus" );
|
avogadro_print( "long phase after bus" );
|
||||||
#/
|
#/
|
||||||
self waittill( "phase_anim_done" );
|
self waittill( "phase_anim_done" );
|
||||||
self.ignoreall = 0;
|
self.ignoreall = 0;
|
||||||
self setfreecameralockonallowed( 1 );
|
self sys::setfreecameralockonallowed( 1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
dist_sq = distancesquared( self.origin, tag_pos );
|
dist_sq = sys::distancesquared( self.origin, tag_pos );
|
||||||
|
|
||||||
if ( dist_sq < 14400 )
|
if ( dist_sq < 14400 )
|
||||||
self bus_attack();
|
self bus_attack();
|
||||||
@ -454,16 +454,16 @@ bus_attack()
|
|||||||
self endon( "stunned" );
|
self endon( "stunned" );
|
||||||
self endon( "stop_bus_attack" );
|
self endon( "stop_bus_attack" );
|
||||||
bus_attack_struct = [];
|
bus_attack_struct = [];
|
||||||
bus_attack_struct[0] = spawnstruct();
|
bus_attack_struct[0] = sys::spawnstruct();
|
||||||
bus_attack_struct[0].window_tag = "window_left_rear_jnt";
|
bus_attack_struct[0].window_tag = "window_left_rear_jnt";
|
||||||
bus_attack_struct[0].substate = "bus_attack_back";
|
bus_attack_struct[0].substate = "bus_attack_back";
|
||||||
bus_attack_struct[1] = spawnstruct();
|
bus_attack_struct[1] = sys::spawnstruct();
|
||||||
bus_attack_struct[1].window_tag = "window_right_front_jnt";
|
bus_attack_struct[1].window_tag = "window_right_front_jnt";
|
||||||
bus_attack_struct[1].substate = "bus_attack_front";
|
bus_attack_struct[1].substate = "bus_attack_front";
|
||||||
bus_attack_struct[2] = spawnstruct();
|
bus_attack_struct[2] = sys::spawnstruct();
|
||||||
bus_attack_struct[2].window_tag = "window_left_2_jnt";
|
bus_attack_struct[2].window_tag = "window_left_2_jnt";
|
||||||
bus_attack_struct[2].substate = "bus_attack_left";
|
bus_attack_struct[2].substate = "bus_attack_left";
|
||||||
bus_attack_struct[3] = spawnstruct();
|
bus_attack_struct[3] = sys::spawnstruct();
|
||||||
bus_attack_struct[3].window_tag = "window_right_3_jnt";
|
bus_attack_struct[3].window_tag = "window_right_3_jnt";
|
||||||
bus_attack_struct[3].substate = "bus_attack_right";
|
bus_attack_struct[3].substate = "bus_attack_right";
|
||||||
random_attack_struct = array_randomize( bus_attack_struct );
|
random_attack_struct = array_randomize( bus_attack_struct );
|
||||||
@ -493,12 +493,12 @@ bus_attack()
|
|||||||
if ( !self.bus_disabled )
|
if ( !self.bus_disabled )
|
||||||
{
|
{
|
||||||
self.shield = 1;
|
self.shield = 1;
|
||||||
self unlink();
|
self sys::unlink();
|
||||||
self avogadro_exit( "bus" );
|
self avogadro_exit( "bus" );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
func = getFunction( "maps/mp/zm_transit_bus", "bus_disabled_by_emp" );
|
func = pluto_sys::getfunction( "maps/mp/zm_transit_bus", "bus_disabled_by_emp" );
|
||||||
if ( isDefined( func ) )
|
if ( isDefined( func ) )
|
||||||
{
|
{
|
||||||
level.the_bus thread [[ func ]]( 30 );
|
level.the_bus thread [[ func ]]( 30 );
|
||||||
@ -517,11 +517,11 @@ attach_to_bus()
|
|||||||
/#
|
/#
|
||||||
avogadro_print( "stay_attached " + self.bus_attack_struct.substate );
|
avogadro_print( "stay_attached " + self.bus_attack_struct.substate );
|
||||||
#/
|
#/
|
||||||
origin = level.the_bus gettagorigin( self.bus_attack_struct.window_tag );
|
origin = level.the_bus sys::gettagorigin( self.bus_attack_struct.window_tag );
|
||||||
angles = level.the_bus gettagangles( self.bus_attack_struct.window_tag );
|
angles = level.the_bus sys::gettagangles( self.bus_attack_struct.window_tag );
|
||||||
self show();
|
self sys::show();
|
||||||
self.shield = 0;
|
self.shield = 0;
|
||||||
self animscripted( origin, angles, "zm_bus_attack", self.bus_attack_struct.substate );
|
self sys::animscripted( origin, angles, "zm_bus_attack", self.bus_attack_struct.substate );
|
||||||
self.bus_shock_time = 0;
|
self.bus_shock_time = 0;
|
||||||
self.state = "stay_attached";
|
self.state = "stay_attached";
|
||||||
return;
|
return;
|
||||||
@ -540,7 +540,7 @@ attach_update()
|
|||||||
if ( self.bus_shock_time >= 2 )
|
if ( self.bus_shock_time >= 2 )
|
||||||
{
|
{
|
||||||
self.bus_shock_time = 0;
|
self.bus_shock_time = 0;
|
||||||
players = get_players();
|
players = sys::getplayers();
|
||||||
|
|
||||||
foreach ( player in players )
|
foreach ( player in players )
|
||||||
{
|
{
|
||||||
@ -561,11 +561,11 @@ attach_update()
|
|||||||
|
|
||||||
detach_from_bus()
|
detach_from_bus()
|
||||||
{
|
{
|
||||||
self unlink();
|
self sys::unlink();
|
||||||
/#
|
/#
|
||||||
avogadro_print( "unlinking from bus window" );
|
avogadro_print( "unlinking from bus window" );
|
||||||
#/
|
#/
|
||||||
bus_forward = vectornormalize( anglestoforward( level.the_bus.angles ) );
|
bus_forward = sys::vectornormalize( anglestoforward( level.the_bus.angles ) );
|
||||||
unlink_pos = level.the_bus.origin + vectorscale( bus_forward, -144 );
|
unlink_pos = level.the_bus.origin + vectorscale( bus_forward, -144 );
|
||||||
unlink_pos = groundpos_ignore_water_new( unlink_pos + vectorscale( ( 0, 0, 1 ), 60.0 ) );
|
unlink_pos = groundpos_ignore_water_new( unlink_pos + vectorscale( ( 0, 0, 1 ), 60.0 ) );
|
||||||
self.shield = 1;
|
self.shield = 1;
|
||||||
@ -579,28 +579,28 @@ bus_disable_show( time )
|
|||||||
self endon( "death" );
|
self endon( "death" );
|
||||||
wait( time );
|
wait( time );
|
||||||
self.shield = 0;
|
self.shield = 0;
|
||||||
self show();
|
self sys::show();
|
||||||
}
|
}
|
||||||
|
|
||||||
bus_disable( bus_attack_struct )
|
bus_disable( bus_attack_struct )
|
||||||
{
|
{
|
||||||
self endon( "melee_pain" );
|
self endon( "melee_pain" );
|
||||||
self.bus_attack_struct = bus_attack_struct;
|
self.bus_attack_struct = bus_attack_struct;
|
||||||
origin = level.the_bus gettagorigin( bus_attack_struct.window_tag );
|
origin = level.the_bus sys::gettagorigin( bus_attack_struct.window_tag );
|
||||||
angles = level.the_bus gettagangles( bus_attack_struct.window_tag );
|
angles = level.the_bus sys::gettagangles( bus_attack_struct.window_tag );
|
||||||
self avogadro_teleport( origin, angles, 0.5, bus_attack_struct.window_tag );
|
self avogadro_teleport( origin, angles, 0.5, bus_attack_struct.window_tag );
|
||||||
self linkto( level.the_bus, bus_attack_struct.window_tag );
|
self sys::linkto( level.the_bus, bus_attack_struct.window_tag );
|
||||||
bus_disable_show( 0.1 );
|
bus_disable_show( 0.1 );
|
||||||
origin = level.the_bus gettagorigin( bus_attack_struct.window_tag );
|
origin = level.the_bus sys::gettagorigin( bus_attack_struct.window_tag );
|
||||||
angles = level.the_bus gettagangles( bus_attack_struct.window_tag );
|
angles = level.the_bus sys::gettagangles( bus_attack_struct.window_tag );
|
||||||
self animscripted( origin, angles, "zm_bus_attack", bus_attack_struct.substate );
|
self sys::animscripted( origin, angles, "zm_bus_attack", bus_attack_struct.substate );
|
||||||
/#
|
/#
|
||||||
avogadro_print( "bus_disable " + bus_attack_struct.substate );
|
avogadro_print( "bus_disable " + bus_attack_struct.substate );
|
||||||
#/
|
#/
|
||||||
success = 0;
|
success = 0;
|
||||||
self.mod_melee = 0;
|
self.mod_melee = 0;
|
||||||
self.bus_shock_time = 0;
|
self.bus_shock_time = 0;
|
||||||
func = getFunction( "maps/mp/zm_transit_bus", "do_player_bus_zombie_vox" );
|
func = pluto_sys::getfunction( "maps/mp/zm_transit_bus", "do_player_bus_zombie_vox" );
|
||||||
if ( isDefined( func ) )
|
if ( isDefined( func ) )
|
||||||
{
|
{
|
||||||
level thread [[ func ]]( "avogadro_onbus", 45 );
|
level thread [[ func ]]( "avogadro_onbus", 45 );
|
||||||
@ -614,7 +614,7 @@ bus_disable( bus_attack_struct )
|
|||||||
if ( self.bus_attack_time >= 20 )
|
if ( self.bus_attack_time >= 20 )
|
||||||
{
|
{
|
||||||
self.bus_disabled = 1;
|
self.bus_disabled = 1;
|
||||||
func = getFunction( "maps/mp/zm_transit_bus", "do_player_bus_zombie_vox" );
|
func = pluto_sys::getfunction( "maps/mp/zm_transit_bus", "do_player_bus_zombie_vox" );
|
||||||
level thread [[ func ]]( "avogadro_stopbus", 45 );
|
level thread [[ func ]]( "avogadro_stopbus", 45 );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -624,7 +624,7 @@ bus_disable( bus_attack_struct )
|
|||||||
if ( self.bus_shock_time >= 2 )
|
if ( self.bus_shock_time >= 2 )
|
||||||
{
|
{
|
||||||
self.bus_shock_time = 0;
|
self.bus_shock_time = 0;
|
||||||
players = get_players();
|
players = sys::getplayers();
|
||||||
|
|
||||||
foreach ( player in players )
|
foreach ( player in players )
|
||||||
{
|
{
|
||||||
@ -651,13 +651,13 @@ avogadro_exit( from )
|
|||||||
self.state = "exiting";
|
self.state = "exiting";
|
||||||
self notify( "stop_find_flesh" );
|
self notify( "stop_find_flesh" );
|
||||||
self notify( "zombie_acquire_enemy" );
|
self notify( "zombie_acquire_enemy" );
|
||||||
self setfreecameralockonallowed( 0 );
|
self sys::setfreecameralockonallowed( 0 );
|
||||||
self.audio_loop_ent stoploopsound( 0.5 );
|
self.audio_loop_ent stoploopsound( 0.5 );
|
||||||
self notify( "stop_health" );
|
self notify( "stop_health" );
|
||||||
|
|
||||||
if ( isdefined( self.health_fx ) )
|
if ( isdefined( self.health_fx ) )
|
||||||
{
|
{
|
||||||
self.health_fx unlink();
|
self.health_fx sys::unlink();
|
||||||
self.health_fx delete();
|
self.health_fx delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -667,23 +667,23 @@ avogadro_exit( from )
|
|||||||
{
|
{
|
||||||
self playsound( "zmb_avogadro_death_short" );
|
self playsound( "zmb_avogadro_death_short" );
|
||||||
playfx( level._effect["avogadro_ascend_aerial"], self.origin );
|
playfx( level._effect["avogadro_ascend_aerial"], self.origin );
|
||||||
self animscripted( self.origin, self.angles, "zm_bus_win" );
|
self sys::animscripted( self.origin, self.angles, "zm_bus_win" );
|
||||||
maps\mp\animscripts\zm_shared::donotetracks( "bus_win_anim" );
|
maps\mp\animscripts\zm_shared::donotetracks( "bus_win_anim" );
|
||||||
}
|
}
|
||||||
else if ( from == "chamber" )
|
else if ( from == "chamber" )
|
||||||
{
|
{
|
||||||
self playsound( "zmb_avogadro_death_short" );
|
self playsound( "zmb_avogadro_death_short" );
|
||||||
playfx( level._effect["avogadro_ascend"], self.origin );
|
playfx( level._effect["avogadro_ascend"], self.origin );
|
||||||
self animscripted( self.origin, self.angles, "zm_chamber_out" );
|
self sys::animscripted( self.origin, self.angles, "zm_chamber_out" );
|
||||||
wait 0.4;
|
wait 0.4;
|
||||||
self ghost();
|
self sys::ghost();
|
||||||
stop_exploder( 500 );
|
stop_exploder( 500 );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
self playsound( "zmb_avogadro_death" );
|
self playsound( "zmb_avogadro_death" );
|
||||||
playfx( level._effect["avogadro_ascend"], self.origin );
|
playfx( level._effect["avogadro_ascend"], self.origin );
|
||||||
self animscripted( self.origin, self.angles, "zm_exit" );
|
self sys::animscripted( self.origin, self.angles, "zm_exit" );
|
||||||
maps\mp\animscripts\zm_shared::donotetracks( "exit_anim" );
|
maps\mp\animscripts\zm_shared::donotetracks( "exit_anim" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -691,18 +691,18 @@ avogadro_exit( from )
|
|||||||
{
|
{
|
||||||
self playsound( "zmb_avogadro_death" );
|
self playsound( "zmb_avogadro_death" );
|
||||||
playfx( level._effect["avogadro_ascend"], self.origin );
|
playfx( level._effect["avogadro_ascend"], self.origin );
|
||||||
self animscripted( self.origin, self.angles, "zm_exit" );
|
self sys::animscripted( self.origin, self.angles, "zm_exit" );
|
||||||
maps\mp\animscripts\zm_shared::donotetracks( "exit_anim" );
|
maps\mp\animscripts\zm_shared::donotetracks( "exit_anim" );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isdefined( from ) || from != "chamber" )
|
if ( !isdefined( from ) || from != "chamber" )
|
||||||
level thread do_avogadro_flee_vo( self );
|
level thread do_avogadro_flee_vo( self );
|
||||||
|
|
||||||
self ghost();
|
self sys::ghost();
|
||||||
self.hit_by_melee = 0;
|
self.hit_by_melee = 0;
|
||||||
self.anchor.origin = self.origin;
|
self.anchor.origin = self.origin;
|
||||||
self.anchor.angles = self.angles;
|
self.anchor.angles = self.angles;
|
||||||
self linkto( self.anchor );
|
self sys::linkto( self.anchor );
|
||||||
|
|
||||||
if ( isdefined( from ) && from == "exit_idle" )
|
if ( isdefined( from ) && from == "exit_idle" )
|
||||||
self.return_round = level.round_number + 1;
|
self.return_round = level.round_number + 1;
|
||||||
@ -729,15 +729,15 @@ cloud_update_fx()
|
|||||||
|
|
||||||
if ( !isdefined( self.sndent ) )
|
if ( !isdefined( self.sndent ) )
|
||||||
{
|
{
|
||||||
self.sndent = spawn( "script_origin", ( 0, 0, 0 ) );
|
self.sndent = sys::spawn( "script_origin", ( 0, 0, 0 ) );
|
||||||
self.sndent playloopsound( "zmb_avogadro_thunder_overhead" );
|
self.sndent playloopsound( "zmb_avogadro_thunder_overhead" );
|
||||||
}
|
}
|
||||||
|
|
||||||
cloud_time = gettime();
|
cloud_time = sys::gettime();
|
||||||
|
|
||||||
for ( vo_counter = 0; 1; vo_counter++ )
|
for ( vo_counter = 0; 1; vo_counter++ )
|
||||||
{
|
{
|
||||||
if ( gettime() >= cloud_time )
|
if ( sys::gettime() >= cloud_time )
|
||||||
{
|
{
|
||||||
if ( isdefined( self.current_region ) )
|
if ( isdefined( self.current_region ) )
|
||||||
{
|
{
|
||||||
@ -763,7 +763,7 @@ cloud_update_fx()
|
|||||||
exploder_num = level.transit_region[region_str].exploder;
|
exploder_num = level.transit_region[region_str].exploder;
|
||||||
exploder( exploder_num );
|
exploder( exploder_num );
|
||||||
self.sndent moveto( level.transit_region[region_str].sndorigin, 3 );
|
self.sndent moveto( level.transit_region[region_str].sndorigin, 3 );
|
||||||
cloud_time = gettime() + 30000;
|
cloud_time = sys::gettime() + 30000;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( vo_counter > 50 )
|
if ( vo_counter > 50 )
|
||||||
@ -824,17 +824,17 @@ cloud_update()
|
|||||||
self thread avogadro_update_health();
|
self thread avogadro_update_health();
|
||||||
playsoundatposition( "zmb_avogadro_spawn_3d", new_origin );
|
playsoundatposition( "zmb_avogadro_spawn_3d", new_origin );
|
||||||
self.audio_loop_ent playloopsound( "zmb_avogadro_loop", 0.5 );
|
self.audio_loop_ent playloopsound( "zmb_avogadro_loop", 0.5 );
|
||||||
self unlink();
|
self sys::unlink();
|
||||||
ground_pos = groundpos_ignore_water_new( new_origin + vectorscale( ( 0, 0, 1 ), 60.0 ) );
|
ground_pos = groundpos_ignore_water_new( new_origin + vectorscale( ( 0, 0, 1 ), 60.0 ) );
|
||||||
playfx( level._effect["avogadro_descend"], ground_pos );
|
playfx( level._effect["avogadro_descend"], ground_pos );
|
||||||
self animscripted( ground_pos, self.anchor.angles, "zm_arrival" );
|
self sys::animscripted( ground_pos, self.anchor.angles, "zm_arrival" );
|
||||||
maps\mp\animscripts\zm_shared::donotetracks( "arrival_anim" );
|
maps\mp\animscripts\zm_shared::donotetracks( "arrival_anim" );
|
||||||
self setfreecameralockonallowed( 1 );
|
self sys::setfreecameralockonallowed( 1 );
|
||||||
time_to_leave = gettime() + 30000;
|
time_to_leave = sys::gettime() + 30000;
|
||||||
|
|
||||||
while ( true )
|
while ( true )
|
||||||
{
|
{
|
||||||
if ( gettime() > time_to_leave )
|
if ( sys::gettime() > time_to_leave )
|
||||||
{
|
{
|
||||||
/#
|
/#
|
||||||
avogadro_print( "enemy never showed - leaving" );
|
avogadro_print( "enemy never showed - leaving" );
|
||||||
@ -875,7 +875,7 @@ enemy_in_region()
|
|||||||
|
|
||||||
get_player_in_region()
|
get_player_in_region()
|
||||||
{
|
{
|
||||||
players = get_players();
|
players = sys::getplayers();
|
||||||
players = array_randomize( players );
|
players = array_randomize( players );
|
||||||
zones = level.transit_region[self.current_region].zones;
|
zones = level.transit_region[self.current_region].zones;
|
||||||
|
|
||||||
@ -936,17 +936,17 @@ cloud_find_spawn()
|
|||||||
avogadro_reveal( show_time )
|
avogadro_reveal( show_time )
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon( "death" );
|
||||||
self show();
|
self sys::show();
|
||||||
wait( show_time );
|
wait( show_time );
|
||||||
self ghost();
|
self sys::ghost();
|
||||||
}
|
}
|
||||||
|
|
||||||
avogadro_teleport( dest_pos, dest_angles, lerp_time, tag_override )
|
avogadro_teleport( dest_pos, dest_angles, lerp_time, tag_override )
|
||||||
{
|
{
|
||||||
self.is_teleport = 1;
|
self.is_teleport = 1;
|
||||||
self.phase_fx = spawn( "script_model", self.origin );
|
self.phase_fx = sys::spawn( "script_model", self.origin );
|
||||||
self.phase_fx setmodel( "tag_origin" );
|
self.phase_fx setmodel( "tag_origin" );
|
||||||
self.phase_fx linkto( self );
|
self.phase_fx sys::linkto( self );
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
playfxontag( level._effect["avogadro_phase_trail"], self.phase_fx, "tag_origin" );
|
playfxontag( level._effect["avogadro_phase_trail"], self.phase_fx, "tag_origin" );
|
||||||
playfx( level._effect["avogadro_phasing"], self.origin );
|
playfx( level._effect["avogadro_phasing"], self.origin );
|
||||||
@ -954,18 +954,18 @@ avogadro_teleport( dest_pos, dest_angles, lerp_time, tag_override )
|
|||||||
self playsound( "zmb_avogadro_warp_out" );
|
self playsound( "zmb_avogadro_warp_out" );
|
||||||
self.anchor.origin = self.origin;
|
self.anchor.origin = self.origin;
|
||||||
self.anchor.angles = self.angles;
|
self.anchor.angles = self.angles;
|
||||||
self linkto( self.anchor );
|
self sys::linkto( self.anchor );
|
||||||
self.anchor moveto( dest_pos, lerp_time );
|
self.anchor moveto( dest_pos, lerp_time );
|
||||||
self.anchor waittill( "movedone" );
|
self.anchor waittill( "movedone" );
|
||||||
self.anchor.origin = dest_pos;
|
self.anchor.origin = dest_pos;
|
||||||
self.anchor.angles = dest_angles;
|
self.anchor.angles = dest_angles;
|
||||||
self unlink();
|
self sys::unlink();
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
|
|
||||||
if ( isdefined( tag_override ) )
|
if ( isdefined( tag_override ) )
|
||||||
{
|
{
|
||||||
dest_pos = level.the_bus gettagorigin( tag_override );
|
dest_pos = level.the_bus sys::gettagorigin( tag_override );
|
||||||
dest_angles = level.the_bus gettagangles( tag_override );
|
dest_angles = level.the_bus sys::gettagangles( tag_override );
|
||||||
}
|
}
|
||||||
|
|
||||||
self forceteleport( dest_pos, dest_angles );
|
self forceteleport( dest_pos, dest_angles );
|
||||||
@ -995,9 +995,9 @@ check_range_attack()
|
|||||||
if ( dist_sq > 14400 && dist_sq < 360000 )
|
if ( dist_sq > 14400 && dist_sq < 360000 )
|
||||||
{
|
{
|
||||||
vec_facing = anglestoforward( self.angles );
|
vec_facing = anglestoforward( self.angles );
|
||||||
norm_facing = vectornormalize( vec_facing );
|
norm_facing = sys::vectornormalize( vec_facing );
|
||||||
norm_enemy = vectornormalize( vec_enemy );
|
norm_enemy = sys::vectornormalize( vec_enemy );
|
||||||
dot = vectordot( norm_facing, norm_enemy );
|
dot = sys::vectordot( norm_facing, norm_enemy );
|
||||||
|
|
||||||
if ( dot > 0.99 )
|
if ( dot > 0.99 )
|
||||||
{
|
{
|
||||||
@ -1022,16 +1022,16 @@ range_attack()
|
|||||||
if ( isdefined( enemy ) )
|
if ( isdefined( enemy ) )
|
||||||
{
|
{
|
||||||
self thread shoot_bolt_wait( "ranged_attack", enemy );
|
self thread shoot_bolt_wait( "ranged_attack", enemy );
|
||||||
self show();
|
self sys::show();
|
||||||
self animscripted( self.origin, self.angles, "zm_ranged_attack_in" );
|
self sys::animscripted( self.origin, self.angles, "zm_ranged_attack_in" );
|
||||||
maps\mp\animscripts\zm_shared::donotetracks( "ranged_attack" );
|
maps\mp\animscripts\zm_shared::donotetracks( "ranged_attack" );
|
||||||
self animscripted( self.origin, self.angles, "zm_ranged_attack_loop" );
|
self sys::animscripted( self.origin, self.angles, "zm_ranged_attack_loop" );
|
||||||
maps\mp\animscripts\zm_shared::donotetracks( "ranged_attack" );
|
maps\mp\animscripts\zm_shared::donotetracks( "ranged_attack" );
|
||||||
self animscripted( self.origin, self.angles, "zm_ranged_attack_out" );
|
self sys::animscripted( self.origin, self.angles, "zm_ranged_attack_out" );
|
||||||
maps\mp\animscripts\zm_shared::donotetracks( "ranged_attack" );
|
maps\mp\animscripts\zm_shared::donotetracks( "ranged_attack" );
|
||||||
self.shield = 1;
|
self.shield = 1;
|
||||||
self thread avogadro_update_health();
|
self thread avogadro_update_health();
|
||||||
self ghost();
|
self sys::ghost();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1044,7 +1044,7 @@ shoot_bolt_wait( animname, enemy )
|
|||||||
|
|
||||||
if ( isdefined( self.health_fx ) )
|
if ( isdefined( self.health_fx ) )
|
||||||
{
|
{
|
||||||
self.health_fx unlink();
|
self.health_fx sys::unlink();
|
||||||
self.health_fx delete();
|
self.health_fx delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1053,9 +1053,9 @@ shoot_bolt_wait( animname, enemy )
|
|||||||
|
|
||||||
shoot_bolt( enemy )
|
shoot_bolt( enemy )
|
||||||
{
|
{
|
||||||
source_pos = self gettagorigin( "tag_weapon_right" );
|
source_pos = self sys::gettagorigin( "tag_weapon_right" );
|
||||||
target_pos = enemy geteye();
|
target_pos = enemy geteye();
|
||||||
bolt = spawn( "script_model", source_pos );
|
bolt = sys::spawn( "script_model", source_pos );
|
||||||
bolt setmodel( "tag_origin" );
|
bolt setmodel( "tag_origin" );
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
self playsound( "zmb_avogadro_attack" );
|
self playsound( "zmb_avogadro_attack" );
|
||||||
@ -1072,7 +1072,7 @@ check_bolt_impact( enemy )
|
|||||||
if ( is_player_valid( enemy ) )
|
if ( is_player_valid( enemy ) )
|
||||||
{
|
{
|
||||||
enemy_eye_pos = enemy geteye();
|
enemy_eye_pos = enemy geteye();
|
||||||
dist_sq = distancesquared( self.origin, enemy_eye_pos );
|
dist_sq = sys::distancesquared( self.origin, enemy_eye_pos );
|
||||||
|
|
||||||
if ( dist_sq < 4096 )
|
if ( dist_sq < 4096 )
|
||||||
{
|
{
|
||||||
@ -1092,39 +1092,39 @@ check_bolt_impact( enemy )
|
|||||||
|
|
||||||
region_empty()
|
region_empty()
|
||||||
{
|
{
|
||||||
if ( gettime() >= self.region_timer )
|
if ( sys::gettime() >= self.region_timer )
|
||||||
{
|
{
|
||||||
player = self get_player_in_region();
|
player = self get_player_in_region();
|
||||||
|
|
||||||
if ( isdefined( player ) )
|
if ( isdefined( player ) )
|
||||||
{
|
{
|
||||||
self.region_timer = gettime() + 500;
|
self.region_timer = sys::gettime() + 500;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/#
|
/#
|
||||||
debug_dist_sq = 0;
|
debug_dist_sq = 0;
|
||||||
#/
|
#/
|
||||||
players = getplayers();
|
players = sys::getplayers();
|
||||||
|
|
||||||
foreach ( player in players )
|
foreach ( player in players )
|
||||||
{
|
{
|
||||||
if ( player maps\mp\zombies\_zm_laststand::player_is_in_laststand() )
|
if ( player maps\mp\zombies\_zm_laststand::player_is_in_laststand() )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
dist_sq = distancesquared( self.origin, player.origin );
|
dist_sq = sys::distancesquared( self.origin, player.origin );
|
||||||
/#
|
/#
|
||||||
debug_dist_sq = distance( self.origin, player.origin );
|
debug_dist_sq = distance( self.origin, player.origin );
|
||||||
#/
|
#/
|
||||||
|
|
||||||
if ( dist_sq < 9000000 )
|
if ( dist_sq < 9000000 )
|
||||||
{
|
{
|
||||||
self.region_timer = gettime() + 500;
|
self.region_timer = sys::gettime() + 500;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self.region_timer = gettime() + 500;
|
self.region_timer = sys::gettime() + 500;
|
||||||
/#
|
/#
|
||||||
avogadro_print( "no one left to kill " + debug_dist_sq );
|
avogadro_print( "no one left to kill " + debug_dist_sq );
|
||||||
#/
|
#/
|
||||||
@ -1148,11 +1148,11 @@ check_phase()
|
|||||||
return false;
|
return false;
|
||||||
#/
|
#/
|
||||||
|
|
||||||
if ( gettime() > self.phase_time )
|
if ( sys::gettime() > self.phase_time )
|
||||||
{
|
{
|
||||||
if ( isdefined( self.is_traversing ) && self.is_traversing )
|
if ( isdefined( self.is_traversing ) && self.is_traversing )
|
||||||
{
|
{
|
||||||
self.phase_time = gettime() + 2000;
|
self.phase_time = sys::gettime() + 2000;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1173,13 +1173,13 @@ do_phase()
|
|||||||
self.state = "phasing";
|
self.state = "phasing";
|
||||||
self notify( "stop_find_flesh" );
|
self notify( "stop_find_flesh" );
|
||||||
self notify( "zombie_acquire_enemy" );
|
self notify( "zombie_acquire_enemy" );
|
||||||
self setfreecameralockonallowed( 0 );
|
self sys::setfreecameralockonallowed( 0 );
|
||||||
self.ignoreall = 1;
|
self.ignoreall = 1;
|
||||||
self thread phase_failsafe();
|
self thread phase_failsafe();
|
||||||
self animcustom( ::play_phase_anim );
|
self sys::animcustom( ::play_phase_anim );
|
||||||
self waittill( "phase_anim_done" );
|
self waittill( "phase_anim_done" );
|
||||||
self.ignoreall = 0;
|
self.ignoreall = 0;
|
||||||
self setfreecameralockonallowed( 1 );
|
self sys::setfreecameralockonallowed( 1 );
|
||||||
self.state = "idle";
|
self.state = "idle";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1187,23 +1187,23 @@ play_phase_anim()
|
|||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon( "death" );
|
||||||
self endon( "phase_anim_done" );
|
self endon( "phase_anim_done" );
|
||||||
self.phase_fx = spawn( "script_model", self.origin );
|
self.phase_fx = sys::spawn( "script_model", self.origin );
|
||||||
self.phase_fx setmodel( "tag_origin" );
|
self.phase_fx setmodel( "tag_origin" );
|
||||||
self.phase_fx linkto( self );
|
self.phase_fx sys::linkto( self );
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
playfxontag( level._effect["avogadro_phase_trail"], self.phase_fx, "tag_origin" );
|
playfxontag( level._effect["avogadro_phase_trail"], self.phase_fx, "tag_origin" );
|
||||||
playfx( level._effect["avogadro_phasing"], self.origin );
|
playfx( level._effect["avogadro_phasing"], self.origin );
|
||||||
self avogadro_reveal( 0.1 );
|
self avogadro_reveal( 0.1 );
|
||||||
self playsound( "zmb_avogadro_warp_out" );
|
self playsound( "zmb_avogadro_warp_out" );
|
||||||
self orientmode( "face enemy" );
|
self sys::orientmode( "face enemy" );
|
||||||
self setanimstatefromasd( self.phase_state, self.phase_substate );
|
self sys::setanimstatefromasd( self.phase_state, self.phase_substate );
|
||||||
maps\mp\animscripts\zm_shared::donotetracks( "teleport_anim" );
|
maps\mp\animscripts\zm_shared::donotetracks( "teleport_anim" );
|
||||||
self.phase_fx delete();
|
self.phase_fx delete();
|
||||||
playfx( level._effect["avogadro_phasing"], self.origin );
|
playfx( level._effect["avogadro_phasing"], self.origin );
|
||||||
self avogadro_reveal( 0.1 );
|
self avogadro_reveal( 0.1 );
|
||||||
self orientmode( "face default" );
|
self sys::orientmode( "face default" );
|
||||||
self playsound( "zmb_avogadro_warp_in" );
|
self playsound( "zmb_avogadro_warp_in" );
|
||||||
self.phase_time = gettime() + 2000;
|
self.phase_time = sys::gettime() + 2000;
|
||||||
self notify( "phase_anim_done" );
|
self notify( "phase_anim_done" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1223,9 +1223,9 @@ phase_failsafe()
|
|||||||
|
|
||||||
playfx( level._effect["avogadro_phasing"], self.origin );
|
playfx( level._effect["avogadro_phasing"], self.origin );
|
||||||
self avogadro_reveal( 0.1 );
|
self avogadro_reveal( 0.1 );
|
||||||
self orientmode( "face default" );
|
self sys::orientmode( "face default" );
|
||||||
self playsound( "zmb_avogadro_warp_in" );
|
self playsound( "zmb_avogadro_warp_in" );
|
||||||
self.phase_time = gettime() + 2000;
|
self.phase_time = sys::gettime() + 2000;
|
||||||
self notify( "phase_anim_done" );
|
self notify( "phase_anim_done" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1281,17 +1281,17 @@ avogadro_pain( einflictor )
|
|||||||
else
|
else
|
||||||
animstate = "zm_bus_pain";
|
animstate = "zm_bus_pain";
|
||||||
|
|
||||||
origin = level.the_bus gettagorigin( tag );
|
origin = level.the_bus sys::gettagorigin( tag );
|
||||||
angles = level.the_bus gettagangles( tag );
|
angles = level.the_bus sys::gettagangles( tag );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self.hit_by_melee < 4 )
|
if ( self.hit_by_melee < 4 )
|
||||||
{
|
{
|
||||||
self thread avogadro_update_health();
|
self thread avogadro_update_health();
|
||||||
self animscripted( origin, angles, animstate, substate );
|
self sys::animscripted( origin, angles, animstate, substate );
|
||||||
maps\mp\animscripts\zm_shared::donotetracks( "pain_anim" );
|
maps\mp\animscripts\zm_shared::donotetracks( "pain_anim" );
|
||||||
self ghost();
|
self sys::ghost();
|
||||||
self.phase_time = gettime() - 1;
|
self.phase_time = sys::gettime() - 1;
|
||||||
|
|
||||||
if ( self.state == "stay_attached" )
|
if ( self.state == "stay_attached" )
|
||||||
self attach_to_bus();
|
self attach_to_bus();
|
||||||
@ -1312,22 +1312,22 @@ avogadro_pain( einflictor )
|
|||||||
/#
|
/#
|
||||||
avogadro_print( "come back on power" );
|
avogadro_print( "come back on power" );
|
||||||
#/
|
#/
|
||||||
self show();
|
self sys::show();
|
||||||
self.in_pain = 0;
|
self.in_pain = 0;
|
||||||
/#
|
/#
|
||||||
avogadro_print( "pain cleared from zone_prr" );
|
avogadro_print( "pain cleared from zone_prr" );
|
||||||
#/
|
#/
|
||||||
self notify( "stop_pain_watcher" );
|
self notify( "stop_pain_watcher" );
|
||||||
self avogadro_teleport( self.core_model.origin, self.core_model.angles, 1 );
|
self avogadro_teleport( self.core_model.origin, self.core_model.angles, 1 );
|
||||||
core_mover = getent( "core_mover", "targetname" );
|
core_mover = sys::getent( "core_mover", "targetname" );
|
||||||
self linkto( core_mover, "tag_origin" );
|
self sys::linkto( core_mover, "tag_origin" );
|
||||||
|
|
||||||
while ( flag( "power_on" ) )
|
while ( flag( "power_on" ) )
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
|
|
||||||
self show();
|
self sys::show();
|
||||||
self.state = "chamber";
|
self.state = "chamber";
|
||||||
self setanimstatefromasd( "zm_chamber_idle" );
|
self sys::setanimstatefromasd( "zm_chamber_idle" );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1341,7 +1341,7 @@ avogadro_pain( einflictor )
|
|||||||
if ( !self maps\mp\zombies\_zm_zonemgr::entity_in_zone( "zone_prr" ) )
|
if ( !self maps\mp\zombies\_zm_zonemgr::entity_in_zone( "zone_prr" ) )
|
||||||
avogadro_print( "no zone" );
|
avogadro_print( "no zone" );
|
||||||
#/
|
#/
|
||||||
self show();
|
self sys::show();
|
||||||
self avogadro_exit();
|
self avogadro_exit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1372,12 +1372,12 @@ avogadro_update_health_fx()
|
|||||||
|
|
||||||
if ( !isdefined( self.health_fx ) )
|
if ( !isdefined( self.health_fx ) )
|
||||||
{
|
{
|
||||||
tag_origin = self gettagorigin( "J_SpineUpper" );
|
tag_origin = self sys::gettagorigin( "J_SpineUpper" );
|
||||||
tag_angles = self gettagangles( "J_SpineUpper" );
|
tag_angles = self sys::gettagangles( "J_SpineUpper" );
|
||||||
self.health_fx = spawn( "script_model", tag_origin );
|
self.health_fx = sys::spawn( "script_model", tag_origin );
|
||||||
self.health_fx.angles = tag_angles;
|
self.health_fx.angles = tag_angles;
|
||||||
self.health_fx setmodel( "tag_origin" );
|
self.health_fx setmodel( "tag_origin" );
|
||||||
self.health_fx linkto( self );
|
self.health_fx sys::linkto( self );
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1405,7 +1405,7 @@ avogadro_damage_func( einflictor, eattacker, idamage, idflags, smeansofdeath, sw
|
|||||||
|
|
||||||
if ( self.shield )
|
if ( self.shield )
|
||||||
{
|
{
|
||||||
einflictor.avogadro_melee_time = gettime();
|
einflictor.avogadro_melee_time = sys::gettime();
|
||||||
maps\mp\_visionset_mgr::vsmgr_activate( "overlay", "zm_ai_avogadro_electrified", einflictor, 0.25, 1 );
|
maps\mp\_visionset_mgr::vsmgr_activate( "overlay", "zm_ai_avogadro_electrified", einflictor, 0.25, 1 );
|
||||||
einflictor shellshock( "electrocution", 0.25 );
|
einflictor shellshock( "electrocution", 0.25 );
|
||||||
einflictor notify( "avogadro_damage_taken" );
|
einflictor notify( "avogadro_damage_taken" );
|
||||||
@ -1414,7 +1414,7 @@ avogadro_damage_func( einflictor, eattacker, idamage, idflags, smeansofdeath, sw
|
|||||||
if ( sweapon == "riotshield_zm" )
|
if ( sweapon == "riotshield_zm" )
|
||||||
{
|
{
|
||||||
shield_damage = level.zombie_vars["riotshield_fling_damage_shield"];
|
shield_damage = level.zombie_vars["riotshield_fling_damage_shield"];
|
||||||
func = getFunction( "maps/mp/zombies/_zm_weap_riotshield", "player_damage_shield" );
|
func = pluto_sys::getfunction( "maps/mp/zombies/_zm_weap_riotshield", "player_damage_shield" );
|
||||||
if ( isDefined( func ) )
|
if ( isDefined( func ) )
|
||||||
{
|
{
|
||||||
einflictor [[ func ]]( shield_damage, 0 );
|
einflictor [[ func ]]( shield_damage, 0 );
|
||||||
@ -1528,7 +1528,7 @@ avogadro_debug_axis()
|
|||||||
{
|
{
|
||||||
if ( !isdefined( self.debug_axis ) )
|
if ( !isdefined( self.debug_axis ) )
|
||||||
{
|
{
|
||||||
self.debug_axis = spawn( "script_model", self.origin );
|
self.debug_axis = sys::spawn( "script_model", self.origin );
|
||||||
self.debug_axis setmodel( "fx_axis_createfx" );
|
self.debug_axis setmodel( "fx_axis_createfx" );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1567,11 +1567,11 @@ avogadro_print( str )
|
|||||||
|
|
||||||
do_avogadro_flee_vo( avogadro )
|
do_avogadro_flee_vo( avogadro )
|
||||||
{
|
{
|
||||||
players = get_players();
|
players = sys::getplayers();
|
||||||
|
|
||||||
foreach ( player in players )
|
foreach ( player in players )
|
||||||
{
|
{
|
||||||
if ( distancesquared( player.origin, avogadro.origin ) < 250000 )
|
if ( sys::distancesquared( player.origin, avogadro.origin ) < 250000 )
|
||||||
{
|
{
|
||||||
player thread do_player_general_vox( "general", "avogadro_flee", 30, 45 );
|
player thread do_player_general_vox( "general", "avogadro_flee", 30, 45 );
|
||||||
return;
|
return;
|
||||||
@ -1585,7 +1585,7 @@ avogadro_storm_vox()
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
level.checking_avogadro_storm_vox = 1;
|
level.checking_avogadro_storm_vox = 1;
|
||||||
players = get_players();
|
players = sys::getplayers();
|
||||||
players = array_randomize( players );
|
players = array_randomize( players );
|
||||||
|
|
||||||
foreach ( player in players )
|
foreach ( player in players )
|
||||||
|
@ -33,9 +33,9 @@ precache()
|
|||||||
level._effect["brutus_lockdown_sm"] = sys::loadfx( "maps/zombie_alcatraz/fx_alcatraz_perk_s_lock" );
|
level._effect["brutus_lockdown_sm"] = sys::loadfx( "maps/zombie_alcatraz/fx_alcatraz_perk_s_lock" );
|
||||||
level._effect["brutus_lockdown_lg"] = sys::loadfx( "maps/zombie_alcatraz/fx_alcatraz_w_bench_lock" );
|
level._effect["brutus_lockdown_lg"] = sys::loadfx( "maps/zombie_alcatraz/fx_alcatraz_w_bench_lock" );
|
||||||
precachemodel( "c_zom_cellbreaker_helmet" );
|
precachemodel( "c_zom_cellbreaker_helmet" );
|
||||||
precacheshellshock( "mp_radiation_high" );
|
sys::precacheshellshock( "mp_radiation_high" );
|
||||||
precacheshellshock( "mp_radiation_med" );
|
sys::precacheshellshock( "mp_radiation_med" );
|
||||||
precacheshellshock( "mp_radiation_low" );
|
sys::precacheshellshock( "mp_radiation_low" );
|
||||||
precachestring( &"ZOMBIE_LOCKED_COST" );
|
precachestring( &"ZOMBIE_LOCKED_COST" );
|
||||||
precachestring( &"ZOMBIE_LOCKED_COST_2000" );
|
precachestring( &"ZOMBIE_LOCKED_COST_2000" );
|
||||||
precachestring( &"ZOMBIE_LOCKED_COST_4000" );
|
precachestring( &"ZOMBIE_LOCKED_COST_4000" );
|
||||||
@ -62,9 +62,9 @@ main()
|
|||||||
level._effect["brutus_lockdown_sm"] = sys::loadfx( "maps/zombie_alcatraz/fx_alcatraz_perk_s_lock" );
|
level._effect["brutus_lockdown_sm"] = sys::loadfx( "maps/zombie_alcatraz/fx_alcatraz_perk_s_lock" );
|
||||||
level._effect["brutus_lockdown_lg"] = sys::loadfx( "maps/zombie_alcatraz/fx_alcatraz_w_bench_lock" );
|
level._effect["brutus_lockdown_lg"] = sys::loadfx( "maps/zombie_alcatraz/fx_alcatraz_w_bench_lock" );
|
||||||
precachemodel( "c_zom_cellbreaker_helmet" );
|
precachemodel( "c_zom_cellbreaker_helmet" );
|
||||||
precacheshellshock( "mp_radiation_high" );
|
sys::precacheshellshock( "mp_radiation_high" );
|
||||||
precacheshellshock( "mp_radiation_med" );
|
sys::precacheshellshock( "mp_radiation_med" );
|
||||||
precacheshellshock( "mp_radiation_low" );
|
sys::precacheshellshock( "mp_radiation_low" );
|
||||||
precachestring( &"ZOMBIE_LOCKED_COST" );
|
precachestring( &"ZOMBIE_LOCKED_COST" );
|
||||||
precachestring( &"ZOMBIE_LOCKED_COST_2000" );
|
precachestring( &"ZOMBIE_LOCKED_COST_2000" );
|
||||||
precachestring( &"ZOMBIE_LOCKED_COST_4000" );
|
precachestring( &"ZOMBIE_LOCKED_COST_4000" );
|
||||||
@ -80,7 +80,7 @@ main()
|
|||||||
|
|
||||||
[[ level.custom_brutus_barrier_fx ]]();
|
[[ level.custom_brutus_barrier_fx ]]();
|
||||||
|
|
||||||
level.brutus_spawners = getentarray( "brutus_zombie_spawner", "script_noteworthy" );
|
level.brutus_spawners = sys::getentarray( "brutus_zombie_spawner", "script_noteworthy" );
|
||||||
|
|
||||||
if ( level.brutus_spawners.size == 0 )
|
if ( level.brutus_spawners.size == 0 )
|
||||||
return;
|
return;
|
||||||
@ -156,7 +156,7 @@ main()
|
|||||||
|
|
||||||
init()
|
init()
|
||||||
{
|
{
|
||||||
level.brutus_spawners = getentarray( "brutus_zombie_spawner", "script_noteworthy" );
|
level.brutus_spawners = sys::getentarray( "brutus_zombie_spawner", "script_noteworthy" );
|
||||||
|
|
||||||
if ( level.brutus_spawners.size == 0 )
|
if ( level.brutus_spawners.size == 0 )
|
||||||
return;
|
return;
|
||||||
@ -233,7 +233,7 @@ init()
|
|||||||
setup_interaction_matrix()
|
setup_interaction_matrix()
|
||||||
{
|
{
|
||||||
level.interaction_types = [];
|
level.interaction_types = [];
|
||||||
level.interaction_types["magic_box"] = spawnstruct();
|
level.interaction_types["magic_box"] = sys::spawnstruct();
|
||||||
level.interaction_types["magic_box"].priority = 0;
|
level.interaction_types["magic_box"].priority = 0;
|
||||||
level.interaction_types["magic_box"].animstate = "zm_lock_magicbox";
|
level.interaction_types["magic_box"].animstate = "zm_lock_magicbox";
|
||||||
level.interaction_types["magic_box"].notify_name = "box_lock_anim";
|
level.interaction_types["magic_box"].notify_name = "box_lock_anim";
|
||||||
@ -246,7 +246,7 @@ setup_interaction_matrix()
|
|||||||
level.interaction_types["magic_box"].spawn_bias = 1000;
|
level.interaction_types["magic_box"].spawn_bias = 1000;
|
||||||
level.interaction_types["magic_box"].num_times_to_scale = 1;
|
level.interaction_types["magic_box"].num_times_to_scale = 1;
|
||||||
level.interaction_types["magic_box"].unlock_cost = 2000;
|
level.interaction_types["magic_box"].unlock_cost = 2000;
|
||||||
level.interaction_types["perk_machine"] = spawnstruct();
|
level.interaction_types["perk_machine"] = sys::spawnstruct();
|
||||||
level.interaction_types["perk_machine"].priority = 1;
|
level.interaction_types["perk_machine"].priority = 1;
|
||||||
level.interaction_types["perk_machine"].animstate = "zm_lock_perk_machine";
|
level.interaction_types["perk_machine"].animstate = "zm_lock_perk_machine";
|
||||||
level.interaction_types["perk_machine"].notify_name = "perk_lock_anim";
|
level.interaction_types["perk_machine"].notify_name = "perk_lock_anim";
|
||||||
@ -260,7 +260,7 @@ setup_interaction_matrix()
|
|||||||
level.interaction_types["perk_machine"].unlock_cost = 2000;
|
level.interaction_types["perk_machine"].unlock_cost = 2000;
|
||||||
if ( getDvar( "mapname" ) == "zm_prison" )
|
if ( getDvar( "mapname" ) == "zm_prison" )
|
||||||
{
|
{
|
||||||
level.interaction_types["craftable_table"] = spawnstruct();
|
level.interaction_types["craftable_table"] = sys::spawnstruct();
|
||||||
level.interaction_types["craftable_table"].priority = 2;
|
level.interaction_types["craftable_table"].priority = 2;
|
||||||
level.interaction_types["craftable_table"].animstate = "zm_smash_craftable_table";
|
level.interaction_types["craftable_table"].animstate = "zm_smash_craftable_table";
|
||||||
level.interaction_types["craftable_table"].notify_name = "table_smash_anim";
|
level.interaction_types["craftable_table"].notify_name = "table_smash_anim";
|
||||||
@ -276,7 +276,7 @@ setup_interaction_matrix()
|
|||||||
level.interaction_types["craftable_table"].interaction_yaw_offset = 270;
|
level.interaction_types["craftable_table"].interaction_yaw_offset = 270;
|
||||||
level.interaction_types["craftable_table"].fx_z_offset = -44;
|
level.interaction_types["craftable_table"].fx_z_offset = -44;
|
||||||
level.interaction_types["craftable_table"].fx_yaw_offset = 270;
|
level.interaction_types["craftable_table"].fx_yaw_offset = 270;
|
||||||
level.interaction_types["trap"] = spawnstruct();
|
level.interaction_types["trap"] = sys::spawnstruct();
|
||||||
level.interaction_types["trap"].priority = 3;
|
level.interaction_types["trap"].priority = 3;
|
||||||
level.interaction_types["trap"].animstate = "zm_smash_trap";
|
level.interaction_types["trap"].animstate = "zm_smash_trap";
|
||||||
level.interaction_types["trap"].notify_name = "trap_smash_anim";
|
level.interaction_types["trap"].notify_name = "trap_smash_anim";
|
||||||
@ -287,7 +287,7 @@ setup_interaction_matrix()
|
|||||||
level.interaction_types["trap"].interact_func = ::trap_smash;
|
level.interaction_types["trap"].interact_func = ::trap_smash;
|
||||||
level.interaction_types["trap"].spawn_bias = 400;
|
level.interaction_types["trap"].spawn_bias = 400;
|
||||||
level.interaction_types["trap"].interaction_z_offset = -15;
|
level.interaction_types["trap"].interaction_z_offset = -15;
|
||||||
level.interaction_types["plane_ramp"] = spawnstruct();
|
level.interaction_types["plane_ramp"] = sys::spawnstruct();
|
||||||
level.interaction_types["plane_ramp"].priority = 4;
|
level.interaction_types["plane_ramp"].priority = 4;
|
||||||
level.interaction_types["plane_ramp"].animstate = "zm_lock_plane_ramp";
|
level.interaction_types["plane_ramp"].animstate = "zm_lock_plane_ramp";
|
||||||
level.interaction_types["plane_ramp"].notify_name = "plane_lock_anim";
|
level.interaction_types["plane_ramp"].notify_name = "plane_lock_anim";
|
||||||
@ -305,7 +305,7 @@ setup_interaction_matrix()
|
|||||||
level.interaction_types["plane_ramp"].fx_x_offset = 70;
|
level.interaction_types["plane_ramp"].fx_x_offset = 70;
|
||||||
level.interaction_types["plane_ramp"].fx_yaw_offset = 90;
|
level.interaction_types["plane_ramp"].fx_yaw_offset = 90;
|
||||||
}
|
}
|
||||||
level.interaction_types["blocker"] = spawnstruct();
|
level.interaction_types["blocker"] = sys::spawnstruct();
|
||||||
level.interaction_types["blocker"].priority = 5;
|
level.interaction_types["blocker"].priority = 5;
|
||||||
level.interaction_types["blocker"].animstate = "zm_smash_blocker";
|
level.interaction_types["blocker"].animstate = "zm_smash_blocker";
|
||||||
level.interaction_types["blocker"].notify_name = "board_smash_anim";
|
level.interaction_types["blocker"].notify_name = "board_smash_anim";
|
||||||
@ -409,10 +409,10 @@ brutus_spawn( starting_health, has_helmet, helmet_hits, explosive_dmg_taken, zon
|
|||||||
self.zombie_init_done = 1;
|
self.zombie_init_done = 1;
|
||||||
self notify( "zombie_init_done" );
|
self notify( "zombie_init_done" );
|
||||||
self.allowpain = 0;
|
self.allowpain = 0;
|
||||||
self animmode( "normal" );
|
self sys::animmode( "normal" );
|
||||||
self orientmode( "face enemy" );
|
self sys::orientmode( "face enemy" );
|
||||||
self maps\mp\zombies\_zm_spawner::zombie_setup_attack_properties();
|
self maps\mp\zombies\_zm_spawner::zombie_setup_attack_properties();
|
||||||
self setfreecameralockonallowed( 0 );
|
self sys::setfreecameralockonallowed( 0 );
|
||||||
level thread maps\mp\zombies\_zm_spawner::zombie_death_event( self );
|
level thread maps\mp\zombies\_zm_spawner::zombie_death_event( self );
|
||||||
self thread maps\mp\zombies\_zm_spawner::enemy_death_detection();
|
self thread maps\mp\zombies\_zm_spawner::enemy_death_detection();
|
||||||
|
|
||||||
@ -459,7 +459,7 @@ brutus_spawn( starting_health, has_helmet, helmet_hits, explosive_dmg_taken, zon
|
|||||||
self thread brutus_lockdown_client_effects( 0.5 );
|
self thread brutus_lockdown_client_effects( 0.5 );
|
||||||
playfx( level._effect["brutus_spawn"], self.origin );
|
playfx( level._effect["brutus_spawn"], self.origin );
|
||||||
playsoundatposition( "zmb_ai_brutus_spawn", self.origin );
|
playsoundatposition( "zmb_ai_brutus_spawn", self.origin );
|
||||||
self animscripted( spawn_pos.origin, spawn_pos.angles, "zm_spawn" );
|
self sys::animscripted( spawn_pos.origin, spawn_pos.angles, "zm_spawn" );
|
||||||
self thread maps\mp\animscripts\zm_shared::donotetracks( "spawn_anim" );
|
self thread maps\mp\animscripts\zm_shared::donotetracks( "spawn_anim" );
|
||||||
self waittillmatch( "spawn_anim", "spawn_complete" );
|
self waittillmatch( "spawn_anim", "spawn_complete" );
|
||||||
self.not_interruptable = 0;
|
self.not_interruptable = 0;
|
||||||
@ -473,9 +473,9 @@ brutus_spawn( starting_health, has_helmet, helmet_hits, explosive_dmg_taken, zon
|
|||||||
brutus_chest_flashlight()
|
brutus_chest_flashlight()
|
||||||
{
|
{
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
self.chest_flashlight = spawn( "script_model", self.origin );
|
self.chest_flashlight = sys::spawn( "script_model", self.origin );
|
||||||
self.chest_flashlight setmodel( "tag_origin" );
|
self.chest_flashlight setmodel( "tag_origin" );
|
||||||
self.chest_flashlight linkto( self, "J_spineupper", ( 0, 0, 0 ), ( 0, 0, 0 ) );
|
self.chest_flashlight sys::linkto( self, "J_spineupper", ( 0, 0, 0 ), ( 0, 0, 0 ) );
|
||||||
playfxontag( level._effect["brutus_flashlight"], self.chest_flashlight, "tag_origin" );
|
playfxontag( level._effect["brutus_flashlight"], self.chest_flashlight, "tag_origin" );
|
||||||
self waittill( "death" );
|
self waittill( "death" );
|
||||||
|
|
||||||
@ -486,23 +486,23 @@ brutus_chest_flashlight()
|
|||||||
brutus_temp_despawn( brutus, endon_notify, respawn_notify )
|
brutus_temp_despawn( brutus, endon_notify, respawn_notify )
|
||||||
{
|
{
|
||||||
level endon( endon_notify );
|
level endon( endon_notify );
|
||||||
align_struct = spawn( "script_model", brutus.origin );
|
align_struct = sys::spawn( "script_model", brutus.origin );
|
||||||
align_struct.angles = brutus.angles;
|
align_struct.angles = brutus.angles;
|
||||||
align_struct setmodel( "tag_origin" );
|
align_struct setmodel( "tag_origin" );
|
||||||
|
|
||||||
if ( !level.brutus_in_grief && ( brutus istouching( level.e_gondola.t_ride ) || isdefined( brutus.force_gondola_teleport ) && brutus.force_gondola_teleport ) )
|
if ( !level.brutus_in_grief && ( brutus sys::istouching( level.e_gondola.t_ride ) || isdefined( brutus.force_gondola_teleport ) && brutus.force_gondola_teleport ) )
|
||||||
{
|
{
|
||||||
brutus.force_gondola_teleport = 0;
|
brutus.force_gondola_teleport = 0;
|
||||||
align_struct linkto( level.e_gondola );
|
align_struct sys::linkto( level.e_gondola );
|
||||||
brutus linkto( align_struct );
|
brutus sys::linkto( align_struct );
|
||||||
}
|
}
|
||||||
|
|
||||||
brutus.not_interruptable = 1;
|
brutus.not_interruptable = 1;
|
||||||
playfxontag( level._effect["brutus_spawn"], align_struct, "tag_origin" );
|
playfxontag( level._effect["brutus_spawn"], align_struct, "tag_origin" );
|
||||||
brutus animscripted( brutus.origin, brutus.angles, "zm_taunt" );
|
brutus sys::animscripted( brutus.origin, brutus.angles, "zm_taunt" );
|
||||||
brutus maps\mp\animscripts\zm_shared::donotetracks( "taunt_anim" );
|
brutus maps\mp\animscripts\zm_shared::donotetracks( "taunt_anim" );
|
||||||
brutus.not_interruptable = 0;
|
brutus.not_interruptable = 0;
|
||||||
brutus ghost();
|
brutus sys::ghost();
|
||||||
brutus notify( "brutus_cleanup" );
|
brutus notify( "brutus_cleanup" );
|
||||||
brutus notify( "brutus_teleporting" );
|
brutus notify( "brutus_teleporting" );
|
||||||
|
|
||||||
@ -564,9 +564,9 @@ snddelayedmusic()
|
|||||||
|
|
||||||
if ( !isdefined( self.sndbrutusmusicent ) )
|
if ( !isdefined( self.sndbrutusmusicent ) )
|
||||||
{
|
{
|
||||||
sndentorigin = self gettagorigin( "J_spineupper" );
|
sndentorigin = self sys::gettagorigin( "J_spineupper" );
|
||||||
self.sndbrutusmusicent = spawn( "script_origin", sndentorigin );
|
self.sndbrutusmusicent = sys::spawn( "script_origin", sndentorigin );
|
||||||
self.sndbrutusmusicent linkto( self, "J_spineupper" );
|
self.sndbrutusmusicent sys::linkto( self, "J_spineupper" );
|
||||||
self.sndbrutusmusicent playloopsound( "mus_event_brutus_loop" );
|
self.sndbrutusmusicent playloopsound( "mus_event_brutus_loop" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -586,7 +586,7 @@ brutus_health_increases()
|
|||||||
{
|
{
|
||||||
if ( level.round_number > level.brutus_last_spawn_round )
|
if ( level.round_number > level.brutus_last_spawn_round )
|
||||||
{
|
{
|
||||||
a_players = getplayers();
|
a_players = sys::getplayers();
|
||||||
n_player_modifier = 1;
|
n_player_modifier = 1;
|
||||||
|
|
||||||
if ( a_players.size > 1 )
|
if ( a_players.size > 1 )
|
||||||
@ -804,14 +804,14 @@ brutus_death()
|
|||||||
{
|
{
|
||||||
team_points = level.brutus_team_points_for_death;
|
team_points = level.brutus_team_points_for_death;
|
||||||
player_points = level.brutus_player_points_for_death;
|
player_points = level.brutus_player_points_for_death;
|
||||||
a_players = getplayers( self.team );
|
a_players = sys::getplayers( self.team );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
multiplier = maps\mp\zombies\_zm_score::get_points_multiplier( self );
|
multiplier = maps\mp\zombies\_zm_score::get_points_multiplier( self );
|
||||||
team_points = multiplier * round_up_score( level.brutus_team_points_for_death, 5 );
|
team_points = multiplier * round_up_score( level.brutus_team_points_for_death, 5 );
|
||||||
player_points = multiplier * round_up_score( level.brutus_player_points_for_death, 5 );
|
player_points = multiplier * round_up_score( level.brutus_player_points_for_death, 5 );
|
||||||
a_players = getplayers();
|
a_players = sys::getplayers();
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ( player in a_players )
|
foreach ( player in a_players )
|
||||||
@ -880,7 +880,7 @@ brutus_round_tracker()
|
|||||||
while ( true )
|
while ( true )
|
||||||
{
|
{
|
||||||
level waittill( "between_round_over" );
|
level waittill( "between_round_over" );
|
||||||
players = get_players();
|
players = sys::getplayers();
|
||||||
|
|
||||||
if ( level.round_number < 9 && ( isdefined( level.is_forever_solo_game ) && level.is_forever_solo_game ) )
|
if ( level.round_number < 9 && ( isdefined( level.is_forever_solo_game ) && level.is_forever_solo_game ) )
|
||||||
continue;
|
continue;
|
||||||
@ -1061,7 +1061,7 @@ brutus_watch_for_gondola()
|
|||||||
{
|
{
|
||||||
level waittill( "gondola_moving" );
|
level waittill( "gondola_moving" );
|
||||||
|
|
||||||
if ( !level.brutus_in_grief && self istouching( level.e_gondola.t_ride ) )
|
if ( !level.brutus_in_grief && self sys::istouching( level.e_gondola.t_ride ) )
|
||||||
self.force_gondola_teleport = 1;
|
self.force_gondola_teleport = 1;
|
||||||
|
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
@ -1070,7 +1070,7 @@ brutus_watch_for_gondola()
|
|||||||
|
|
||||||
are_all_targets_invalid()
|
are_all_targets_invalid()
|
||||||
{
|
{
|
||||||
a_players = getplayers();
|
a_players = sys::getplayers();
|
||||||
|
|
||||||
foreach ( player in a_players )
|
foreach ( player in a_players )
|
||||||
{
|
{
|
||||||
@ -1103,7 +1103,7 @@ brutus_watch_for_non_afterlife_players()
|
|||||||
|
|
||||||
while ( b_all_players_in_afterlife )
|
while ( b_all_players_in_afterlife )
|
||||||
{
|
{
|
||||||
a_players = getplayers();
|
a_players = sys::getplayers();
|
||||||
|
|
||||||
foreach ( player in a_players )
|
foreach ( player in a_players )
|
||||||
{
|
{
|
||||||
@ -1120,23 +1120,23 @@ brutus_watch_for_non_afterlife_players()
|
|||||||
brutus_stuck_teleport()
|
brutus_stuck_teleport()
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon( "death" );
|
||||||
align_struct = spawn( "script_model", self.origin );
|
align_struct = sys::spawn( "script_model", self.origin );
|
||||||
align_struct.angles = self.angles;
|
align_struct.angles = self.angles;
|
||||||
align_struct setmodel( "tag_origin" );
|
align_struct setmodel( "tag_origin" );
|
||||||
|
|
||||||
if ( !level.brutus_in_grief && ( self istouching( level.e_gondola.t_ride ) || isdefined( self.force_gondola_teleport ) && self.force_gondola_teleport ) )
|
if ( !level.brutus_in_grief && ( self sys::istouching( level.e_gondola.t_ride ) || isdefined( self.force_gondola_teleport ) && self.force_gondola_teleport ) )
|
||||||
{
|
{
|
||||||
self.force_gondola_teleport = 0;
|
self.force_gondola_teleport = 0;
|
||||||
align_struct linkto( level.e_gondola );
|
align_struct sys::linkto( level.e_gondola );
|
||||||
self linkto( align_struct );
|
self sys::linkto( align_struct );
|
||||||
}
|
}
|
||||||
|
|
||||||
self.not_interruptable = 1;
|
self.not_interruptable = 1;
|
||||||
playfxontag( level._effect["brutus_spawn"], align_struct, "tag_origin" );
|
playfxontag( level._effect["brutus_spawn"], align_struct, "tag_origin" );
|
||||||
self animscripted( self.origin, self.angles, "zm_taunt" );
|
self sys::animscripted( self.origin, self.angles, "zm_taunt" );
|
||||||
self maps\mp\animscripts\zm_shared::donotetracks( "taunt_anim" );
|
self maps\mp\animscripts\zm_shared::donotetracks( "taunt_anim" );
|
||||||
self.not_interruptable = 0;
|
self.not_interruptable = 0;
|
||||||
self ghost();
|
self sys::ghost();
|
||||||
self notify( "brutus_cleanup" );
|
self notify( "brutus_cleanup" );
|
||||||
self notify( "brutus_teleporting" );
|
self notify( "brutus_teleporting" );
|
||||||
|
|
||||||
@ -1180,7 +1180,7 @@ watch_for_valid_melee()
|
|||||||
{
|
{
|
||||||
self waittillmatch( "melee_anim", "end" );
|
self waittillmatch( "melee_anim", "end" );
|
||||||
|
|
||||||
if ( isdefined( self.favorite_enemy ) && distancesquared( self.origin, self.favorite_enemy.origin ) < 16384 && !( isdefined( self.favorite_enemy.is_on_gondola ) && self.favorite_enemy.is_on_gondola ) )
|
if ( isdefined( self.favorite_enemy ) && sys::distancesquared( self.origin, self.favorite_enemy.origin ) < 16384 && !( isdefined( self.favorite_enemy.is_on_gondola ) && self.favorite_enemy.is_on_gondola ) )
|
||||||
self.fail_count = 0;
|
self.fail_count = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1315,7 +1315,7 @@ brutus_find_flesh()
|
|||||||
self.priority_item = self get_priority_item_for_brutus( brutus_zone, 1 );
|
self.priority_item = self get_priority_item_for_brutus( brutus_zone, 1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( player ) && distancesquared( self.origin, player.origin ) < level.brutus_aggro_dist_sq && isdefined( player_zone ) && should_brutus_aggro( player_zone, brutus_zone ) )
|
if ( isdefined( player ) && sys::distancesquared( self.origin, player.origin ) < level.brutus_aggro_dist_sq && isdefined( player_zone ) && should_brutus_aggro( player_zone, brutus_zone ) )
|
||||||
{
|
{
|
||||||
self.favorite_enemy = player;
|
self.favorite_enemy = player;
|
||||||
self.goal_pos = player.origin;
|
self.goal_pos = player.origin;
|
||||||
@ -1327,7 +1327,7 @@ brutus_find_flesh()
|
|||||||
self.goalradius = 12;
|
self.goalradius = 12;
|
||||||
self.custom_goalradius_override = 12;
|
self.custom_goalradius_override = 12;
|
||||||
self.goal_pos = self get_interact_offset( self.priority_item, self.ai_state );
|
self.goal_pos = self get_interact_offset( self.priority_item, self.ai_state );
|
||||||
self setgoalpos( self.goal_pos );
|
self sys::setgoalpos( self.goal_pos );
|
||||||
}
|
}
|
||||||
else if ( isdefined( player ) )
|
else if ( isdefined( player ) )
|
||||||
{
|
{
|
||||||
@ -1339,8 +1339,8 @@ brutus_find_flesh()
|
|||||||
{
|
{
|
||||||
self.goal_pos = self.origin;
|
self.goal_pos = self.origin;
|
||||||
self.ai_state = "idle";
|
self.ai_state = "idle";
|
||||||
self setanimstatefromasd( "zm_idle" );
|
self sys::setanimstatefromasd( "zm_idle" );
|
||||||
self setgoalpos( self.goal_pos );
|
self sys::setgoalpos( self.goal_pos );
|
||||||
}
|
}
|
||||||
|
|
||||||
wait 1;
|
wait 1;
|
||||||
@ -1354,7 +1354,7 @@ trap_damage_callback( trap )
|
|||||||
if ( !( isdefined( self.not_interruptable ) && self.not_interruptable ) )
|
if ( !( isdefined( self.not_interruptable ) && self.not_interruptable ) )
|
||||||
{
|
{
|
||||||
self.not_interruptable = 1;
|
self.not_interruptable = 1;
|
||||||
self animscripted( self.origin, self.angles, "zm_taunt" );
|
self sys::animscripted( self.origin, self.angles, "zm_taunt" );
|
||||||
self maps\mp\animscripts\shared::donotetracks( "taunt_anim" );
|
self maps\mp\animscripts\shared::donotetracks( "taunt_anim" );
|
||||||
|
|
||||||
if ( trap.targetname == "fan_trap" )
|
if ( trap.targetname == "fan_trap" )
|
||||||
@ -1458,7 +1458,7 @@ get_priority_item_for_brutus( zone_name, do_secondary_zone_checks )
|
|||||||
|
|
||||||
get_dist_score( object )
|
get_dist_score( object )
|
||||||
{
|
{
|
||||||
return distancesquared( self.origin, object.origin );
|
return sys::distancesquared( self.origin, object.origin );
|
||||||
}
|
}
|
||||||
|
|
||||||
get_trap_score( object )
|
get_trap_score( object )
|
||||||
@ -1466,7 +1466,7 @@ get_trap_score( object )
|
|||||||
if ( sighttracepassed( self.origin + ( 0, 0, 1 ), object.origin, 0, self ) )
|
if ( sighttracepassed( self.origin + ( 0, 0, 1 ), object.origin, 0, self ) )
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return distancesquared( self.origin, object.origin );
|
return sys::distancesquared( self.origin, object.origin );
|
||||||
}
|
}
|
||||||
|
|
||||||
get_magic_boxes( zone_name )
|
get_magic_boxes( zone_name )
|
||||||
@ -1486,11 +1486,11 @@ is_magic_box_valid()
|
|||||||
get_perk_machine_trigger()
|
get_perk_machine_trigger()
|
||||||
{
|
{
|
||||||
if ( self.targetname == "vendingelectric_cherry" )
|
if ( self.targetname == "vendingelectric_cherry" )
|
||||||
perk_machine = getent( "vending_electriccherry", "target" );
|
perk_machine = sys::getent( "vending_electriccherry", "target" );
|
||||||
else if ( self.targetname == "vending_deadshot_model" )
|
else if ( self.targetname == "vending_deadshot_model" )
|
||||||
perk_machine = getent( "vending_deadshot", "target" );
|
perk_machine = sys::getent( "vending_deadshot", "target" );
|
||||||
else
|
else
|
||||||
perk_machine = getent( self.targetname, "target" );
|
perk_machine = sys::getent( self.targetname, "target" );
|
||||||
|
|
||||||
return perk_machine;
|
return perk_machine;
|
||||||
}
|
}
|
||||||
@ -1522,7 +1522,7 @@ get_trigger_for_craftable()
|
|||||||
return level.a_uts_craftables[i];
|
return level.a_uts_craftables[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
trig_ent = getent( self.targetname, "target" );
|
trig_ent = sys::getent( self.targetname, "target" );
|
||||||
return trig_ent;
|
return trig_ent;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1555,7 +1555,7 @@ get_closest_trap_for_brutus()
|
|||||||
if ( !level.trap_triggers[i] [[ level.interaction_types["trap"].validity_func ]]() )
|
if ( !level.trap_triggers[i] [[ level.interaction_types["trap"].validity_func ]]() )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
dist = distancesquared( self.origin, level.trap_triggers[i].origin );
|
dist = sys::distancesquared( self.origin, level.trap_triggers[i].origin );
|
||||||
|
|
||||||
if ( dist < best_dist || best_dist < 0 )
|
if ( dist < best_dist || best_dist < 0 )
|
||||||
{
|
{
|
||||||
@ -1621,7 +1621,7 @@ is_blocker_valid()
|
|||||||
brutus_get_closest_valid_player()
|
brutus_get_closest_valid_player()
|
||||||
{
|
{
|
||||||
valid_player_found = 0;
|
valid_player_found = 0;
|
||||||
players = get_players();
|
players = sys::getplayers();
|
||||||
|
|
||||||
if ( isdefined( level._zombie_using_humangun ) && level._zombie_using_humangun )
|
if ( isdefined( level._zombie_using_humangun ) && level._zombie_using_humangun )
|
||||||
players = arraycombine( players, level._zombie_human_array, 0, 0 );
|
players = arraycombine( players, level._zombie_human_array, 0, 0 );
|
||||||
@ -1663,7 +1663,7 @@ watch_for_player_dist()
|
|||||||
{
|
{
|
||||||
player = brutus_get_closest_valid_player();
|
player = brutus_get_closest_valid_player();
|
||||||
|
|
||||||
if ( !isdefined( player ) || distancesquared( player.origin, self.origin ) > level.brutus_reset_dist_sq )
|
if ( !isdefined( player ) || sys::distancesquared( player.origin, self.origin ) > level.brutus_reset_dist_sq )
|
||||||
{
|
{
|
||||||
self.ai_state = "idle";
|
self.ai_state = "idle";
|
||||||
self notify( "zombie_acquire_enemy" );
|
self notify( "zombie_acquire_enemy" );
|
||||||
@ -1699,7 +1699,7 @@ brutus_goal_watcher()
|
|||||||
angles = angles + ( 0, interaction.interaction_yaw_offset, 0 );
|
angles = angles + ( 0, interaction.interaction_yaw_offset, 0 );
|
||||||
|
|
||||||
self.not_interruptable = 1;
|
self.not_interruptable = 1;
|
||||||
self animscripted( origin, angles, interaction.animstate );
|
self sys::animscripted( origin, angles, interaction.animstate );
|
||||||
self thread maps\mp\animscripts\zm_shared::donotetracks( interaction.notify_name );
|
self thread maps\mp\animscripts\zm_shared::donotetracks( interaction.notify_name );
|
||||||
self thread snddointeractionvox( interaction.notify_name );
|
self thread snddointeractionvox( interaction.notify_name );
|
||||||
self waittillmatch( interaction.notify_name, interaction.action_notetrack );
|
self waittillmatch( interaction.notify_name, interaction.action_notetrack );
|
||||||
@ -1764,11 +1764,11 @@ brutus_fire_teargas_when_possible()
|
|||||||
|
|
||||||
self.not_interruptable = 1;
|
self.not_interruptable = 1;
|
||||||
self playsound( "vox_brutus_enraged" );
|
self playsound( "vox_brutus_enraged" );
|
||||||
self animscripted( self.origin, self.angles, "zm_teargas_attack" );
|
self sys::animscripted( self.origin, self.angles, "zm_teargas_attack" );
|
||||||
self thread maps\mp\animscripts\zm_shared::donotetracks( "teargas_anim" );
|
self thread maps\mp\animscripts\zm_shared::donotetracks( "teargas_anim" );
|
||||||
self waittillmatch( "teargas_anim", "grenade_drop" );
|
self waittillmatch( "teargas_anim", "grenade_drop" );
|
||||||
v_org_left = self gettagorigin( "TAG_WEAPON_LEFT" );
|
v_org_left = self sys::gettagorigin( "TAG_WEAPON_LEFT" );
|
||||||
v_org_right = self gettagorigin( "TAG_WEAPON_RIGHT" );
|
v_org_right = self sys::gettagorigin( "TAG_WEAPON_RIGHT" );
|
||||||
self thread sndplaydelayedsmokeaudio( v_org_left, v_org_right );
|
self thread sndplaydelayedsmokeaudio( v_org_left, v_org_right );
|
||||||
self magicgrenadetype( "willy_pete_zm", v_org_left, ( 0, 0, 0 ), 0.4 );
|
self magicgrenadetype( "willy_pete_zm", v_org_left, ( 0, 0, 0 ), 0.4 );
|
||||||
self magicgrenadetype( "willy_pete_zm", v_org_right, ( 0, 0, 0 ), 0.4 );
|
self magicgrenadetype( "willy_pete_zm", v_org_right, ( 0, 0, 0 ), 0.4 );
|
||||||
@ -1819,7 +1819,7 @@ brutus_remove_helmet( vdir )
|
|||||||
|
|
||||||
self.not_interruptable = 1;
|
self.not_interruptable = 1;
|
||||||
self playsound( "vox_brutus_exert" );
|
self playsound( "vox_brutus_exert" );
|
||||||
self animscripted( self.origin, self.angles, "zm_pain" );
|
self sys::animscripted( self.origin, self.angles, "zm_pain" );
|
||||||
self maps\mp\animscripts\zm_shared::donotetracks( "pain_anim" );
|
self maps\mp\animscripts\zm_shared::donotetracks( "pain_anim" );
|
||||||
self.not_interruptable = 0;
|
self.not_interruptable = 0;
|
||||||
}
|
}
|
||||||
@ -1912,7 +1912,7 @@ perk_machine_lock()
|
|||||||
else
|
else
|
||||||
lock_fx = level._effect["brutus_lockdown"];
|
lock_fx = level._effect["brutus_lockdown"];
|
||||||
|
|
||||||
perk_machine.lock_fx = spawn( "script_model", self.priority_item.origin );
|
perk_machine.lock_fx = sys::spawn( "script_model", self.priority_item.origin );
|
||||||
perk_machine.lock_fx.angles = self.priority_item.angles;
|
perk_machine.lock_fx.angles = self.priority_item.angles;
|
||||||
perk_machine.lock_fx = offset_fx_struct( int_struct, perk_machine.lock_fx );
|
perk_machine.lock_fx = offset_fx_struct( int_struct, perk_machine.lock_fx );
|
||||||
perk_machine.lock_fx setmodel( "tag_origin" );
|
perk_machine.lock_fx setmodel( "tag_origin" );
|
||||||
@ -1936,7 +1936,7 @@ craftable_table_lock()
|
|||||||
|
|
||||||
craftable_table = table_struct get_trigger_for_craftable();
|
craftable_table = table_struct get_trigger_for_craftable();
|
||||||
int_struct = level.interaction_types["craftable_table"];
|
int_struct = level.interaction_types["craftable_table"];
|
||||||
craftable_table.lock_fx = spawn( "script_model", table_struct.origin );
|
craftable_table.lock_fx = sys::spawn( "script_model", table_struct.origin );
|
||||||
craftable_table.lock_fx.angles = table_struct.angles;
|
craftable_table.lock_fx.angles = table_struct.angles;
|
||||||
craftable_table.lock_fx = offset_fx_struct( int_struct, craftable_table.lock_fx );
|
craftable_table.lock_fx = offset_fx_struct( int_struct, craftable_table.lock_fx );
|
||||||
craftable_table.lock_fx setmodel( "tag_origin" );
|
craftable_table.lock_fx setmodel( "tag_origin" );
|
||||||
@ -1987,7 +1987,7 @@ plane_ramp_lock()
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
int_struct = level.interaction_types["plane_ramp"];
|
int_struct = level.interaction_types["plane_ramp"];
|
||||||
plane_ramp.lock_fx = spawn( "script_model", plane_ramp.origin );
|
plane_ramp.lock_fx = sys::spawn( "script_model", plane_ramp.origin );
|
||||||
plane_ramp.lock_fx.angles = plane_ramp.angles;
|
plane_ramp.lock_fx.angles = plane_ramp.angles;
|
||||||
plane_ramp.lock_fx = offset_fx_struct( int_struct, plane_ramp.lock_fx );
|
plane_ramp.lock_fx = offset_fx_struct( int_struct, plane_ramp.lock_fx );
|
||||||
plane_ramp.lock_fx setmodel( "tag_origin" );
|
plane_ramp.lock_fx setmodel( "tag_origin" );
|
||||||
@ -2040,7 +2040,7 @@ blocker_smash()
|
|||||||
|
|
||||||
melee_anim_func()
|
melee_anim_func()
|
||||||
{
|
{
|
||||||
self.next_leap_time = gettime() + 1500;
|
self.next_leap_time = sys::gettime() + 1500;
|
||||||
}
|
}
|
||||||
|
|
||||||
kill_teargas_after_duration( duration )
|
kill_teargas_after_duration( duration )
|
||||||
@ -2066,7 +2066,7 @@ teargas_player( player )
|
|||||||
|
|
||||||
while ( true )
|
while ( true )
|
||||||
{
|
{
|
||||||
if ( !player istouching( self ) )
|
if ( !player sys::istouching( self ) )
|
||||||
clear_timer = clear_timer + 0.1;
|
clear_timer = clear_timer + 0.1;
|
||||||
else
|
else
|
||||||
clear_timer = 0;
|
clear_timer = 0;
|
||||||
@ -2078,9 +2078,9 @@ teargas_player( player )
|
|||||||
}
|
}
|
||||||
else if ( teargas_timer % 5 == 0 )
|
else if ( teargas_timer % 5 == 0 )
|
||||||
{
|
{
|
||||||
if ( distancesquared( player.origin, self.origin ) > level.brutus_teargas_radius * 2 / 3 * ( level.brutus_teargas_radius * 2 / 3 ) )
|
if ( sys::distancesquared( player.origin, self.origin ) > level.brutus_teargas_radius * 2 / 3 * ( level.brutus_teargas_radius * 2 / 3 ) )
|
||||||
player shellshock( "mp_radiation_low", 1.5 );
|
player shellshock( "mp_radiation_low", 1.5 );
|
||||||
else if ( distancesquared( player.origin, self.origin ) > level.brutus_teargas_radius * 1 / 3 * ( level.brutus_teargas_radius * 1 / 3 ) )
|
else if ( sys::distancesquared( player.origin, self.origin ) > level.brutus_teargas_radius * 1 / 3 * ( level.brutus_teargas_radius * 1 / 3 ) )
|
||||||
player shellshock( "mp_radiation_med", 1.5 );
|
player shellshock( "mp_radiation_med", 1.5 );
|
||||||
else
|
else
|
||||||
player shellshock( "mp_radiation_high", 1.5 );
|
player shellshock( "mp_radiation_high", 1.5 );
|
||||||
@ -2096,7 +2096,7 @@ teargas_trigger_think()
|
|||||||
{
|
{
|
||||||
self endon( "kill_teargas" );
|
self endon( "kill_teargas" );
|
||||||
self thread kill_teargas_after_duration( level.brutus_teargas_duration );
|
self thread kill_teargas_after_duration( level.brutus_teargas_duration );
|
||||||
players = get_players();
|
players = sys::getplayers();
|
||||||
|
|
||||||
for ( i = 0; i < players.size; i++ )
|
for ( i = 0; i < players.size; i++ )
|
||||||
{
|
{
|
||||||
@ -2300,10 +2300,10 @@ custom_brutus_flame_death_fx()
|
|||||||
{
|
{
|
||||||
if ( !self.isdog )
|
if ( !self.isdog )
|
||||||
{
|
{
|
||||||
v_origin = self gettagorigin( "J_SpineLower" );
|
v_origin = self sys::gettagorigin( "J_SpineLower" );
|
||||||
e_origin = spawn( "script_origin", v_origin );
|
e_origin = sys::spawn( "script_origin", v_origin );
|
||||||
e_origin setmodel( "tag_origin" );
|
e_origin setmodel( "tag_origin" );
|
||||||
e_origin linkto( self, "J_SpineLower" );
|
e_origin sys::linkto( self, "J_SpineLower" );
|
||||||
playfxontag( level._effect["character_fire_death_torso"], e_origin, "tag_origin" );
|
playfxontag( level._effect["character_fire_death_torso"], e_origin, "tag_origin" );
|
||||||
a_script_origins[a_script_origins.size] = e_origin;
|
a_script_origins[a_script_origins.size] = e_origin;
|
||||||
}
|
}
|
||||||
@ -2324,10 +2324,10 @@ custom_brutus_flame_death_fx()
|
|||||||
tagarray[2] = "J_Knee_RI";
|
tagarray[2] = "J_Knee_RI";
|
||||||
tagarray[3] = "J_Knee_LE";
|
tagarray[3] = "J_Knee_LE";
|
||||||
tagarray = maps\mp\animscripts\zm_death::randomize_array( tagarray );
|
tagarray = maps\mp\animscripts\zm_death::randomize_array( tagarray );
|
||||||
v_origin = self gettagorigin( tagarray[0] );
|
v_origin = self sys::gettagorigin( tagarray[0] );
|
||||||
e_origin = spawn( "script_origin", v_origin );
|
e_origin = sys::spawn( "script_origin", v_origin );
|
||||||
e_origin setmodel( "tag_origin" );
|
e_origin setmodel( "tag_origin" );
|
||||||
e_origin linkto( self, tagarray[0] );
|
e_origin sys::linkto( self, tagarray[0] );
|
||||||
playfxontag( level._effect["character_fire_death_torso"], e_origin, "tag_origin" );
|
playfxontag( level._effect["character_fire_death_torso"], e_origin, "tag_origin" );
|
||||||
a_script_origins[a_script_origins.size] = e_origin;
|
a_script_origins[a_script_origins.size] = e_origin;
|
||||||
wait 1;
|
wait 1;
|
||||||
@ -2341,14 +2341,14 @@ custom_brutus_flame_death_fx()
|
|||||||
}
|
}
|
||||||
|
|
||||||
tagarray = maps\mp\animscripts\zm_death::randomize_array( tagarray );
|
tagarray = maps\mp\animscripts\zm_death::randomize_array( tagarray );
|
||||||
v_origin_0 = self gettagorigin( tagarray[0] );
|
v_origin_0 = self sys::gettagorigin( tagarray[0] );
|
||||||
v_origin_1 = self gettagorigin( tagarray[1] );
|
v_origin_1 = self sys::gettagorigin( tagarray[1] );
|
||||||
e_origin_0 = spawn( "script_origin", v_origin_0 );
|
e_origin_0 = sys::spawn( "script_origin", v_origin_0 );
|
||||||
e_origin_1 = spawn( "script_origin", v_origin_1 );
|
e_origin_1 = sys::spawn( "script_origin", v_origin_1 );
|
||||||
e_origin_0 setmodel( "tag_origin" );
|
e_origin_0 setmodel( "tag_origin" );
|
||||||
e_origin_1 setmodel( "tag_origin" );
|
e_origin_1 setmodel( "tag_origin" );
|
||||||
e_origin_0 linkto( self, tagarray[0] );
|
e_origin_0 sys::linkto( self, tagarray[0] );
|
||||||
e_origin_1 linkto( self, tagarray[1] );
|
e_origin_1 sys::linkto( self, tagarray[1] );
|
||||||
playfxontag( level._effect["character_fire_death_torso"], e_origin_0, "tag_origin" );
|
playfxontag( level._effect["character_fire_death_torso"], e_origin_0, "tag_origin" );
|
||||||
playfxontag( level._effect["character_fire_death_torso"], e_origin_1, "tag_origin" );
|
playfxontag( level._effect["character_fire_death_torso"], e_origin_1, "tag_origin" );
|
||||||
a_script_origins[a_script_origins.size] = e_origin_0;
|
a_script_origins[a_script_origins.size] = e_origin_0;
|
||||||
@ -2390,7 +2390,7 @@ brutus_debug()
|
|||||||
{
|
{
|
||||||
if ( debug_level == 1 )
|
if ( debug_level == 1 )
|
||||||
{
|
{
|
||||||
brutus_array = getentarray( "brutus_zombie_ai" );
|
brutus_array = sys::getentarray( "brutus_zombie_ai" );
|
||||||
|
|
||||||
for ( i = 0; i < brutus_array.size; i++ )
|
for ( i = 0; i < brutus_array.size; i++ )
|
||||||
{
|
{
|
||||||
@ -2451,7 +2451,7 @@ brutus_watch_enemy()
|
|||||||
|
|
||||||
get_favorite_enemy()
|
get_favorite_enemy()
|
||||||
{
|
{
|
||||||
brutus_targets = getplayers();
|
brutus_targets = sys::getplayers();
|
||||||
least_hunted = brutus_targets[0];
|
least_hunted = brutus_targets[0];
|
||||||
|
|
||||||
for ( i = 0; i < brutus_targets.size; i++ )
|
for ( i = 0; i < brutus_targets.size; i++ )
|
||||||
@ -2517,14 +2517,14 @@ get_brutus_interest_points()
|
|||||||
|
|
||||||
build_trap_array()
|
build_trap_array()
|
||||||
{
|
{
|
||||||
fan_array = getentarray( "acid_trap_trigger", "targetname" );
|
fan_array = sys::getentarray( "acid_trap_trigger", "targetname" );
|
||||||
acid_array = getentarray( "fan_trap_use_trigger", "targetname" );
|
acid_array = sys::getentarray( "fan_trap_use_trigger", "targetname" );
|
||||||
level.trap_triggers = arraycombine( fan_array, acid_array, 0, 0 );
|
level.trap_triggers = arraycombine( fan_array, acid_array, 0, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
add_machines_in_zone( zone, zone_name, match_string )
|
add_machines_in_zone( zone, zone_name, match_string )
|
||||||
{
|
{
|
||||||
machine_array = getentarray( match_string, "targetname" );
|
machine_array = sys::getentarray( match_string, "targetname" );
|
||||||
|
|
||||||
for ( i = 0; i < machine_array.size; i++ )
|
for ( i = 0; i < machine_array.size; i++ )
|
||||||
{
|
{
|
||||||
@ -2579,7 +2579,7 @@ get_zone_craftable_tables( zone_name )
|
|||||||
while ( level.a_uts_craftables.size == 0 )
|
while ( level.a_uts_craftables.size == 0 )
|
||||||
wait 1;
|
wait 1;
|
||||||
|
|
||||||
scr_org = spawn( "script_origin", ( 0, 0, 0 ) );
|
scr_org = sys::spawn( "script_origin", ( 0, 0, 0 ) );
|
||||||
craftable_tables = level.a_uts_craftables;
|
craftable_tables = level.a_uts_craftables;
|
||||||
|
|
||||||
for ( i = 0; i < craftable_tables.size; i++ )
|
for ( i = 0; i < craftable_tables.size; i++ )
|
||||||
@ -2601,8 +2601,8 @@ get_zone_traps( zone_name )
|
|||||||
{
|
{
|
||||||
zone = level.zones[zone_name];
|
zone = level.zones[zone_name];
|
||||||
zone.traps = [];
|
zone.traps = [];
|
||||||
acid_traps = getentarray( "acid_trap_trigger", "targetname" );
|
acid_traps = sys::getentarray( "acid_trap_trigger", "targetname" );
|
||||||
scr_org = spawn( "script_origin", ( 0, 0, 0 ) );
|
scr_org = sys::spawn( "script_origin", ( 0, 0, 0 ) );
|
||||||
|
|
||||||
for ( i = 0; i < acid_traps.size; i++ )
|
for ( i = 0; i < acid_traps.size; i++ )
|
||||||
{
|
{
|
||||||
@ -2618,7 +2618,7 @@ get_zone_traps( zone_name )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fan_traps = getentarray( "fan_trap_use_trigger", "targetname" );
|
fan_traps = sys::getentarray( "fan_trap_use_trigger", "targetname" );
|
||||||
|
|
||||||
for ( i = 0; i < fan_traps.size; i++ )
|
for ( i = 0; i < fan_traps.size; i++ )
|
||||||
{
|
{
|
||||||
@ -2634,7 +2634,7 @@ get_zone_traps( zone_name )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tower_traps = getentarray( "tower_trap_activate_trigger", "targetname" );
|
tower_traps = sys::getentarray( "tower_trap_activate_trigger", "targetname" );
|
||||||
|
|
||||||
for ( i = 0; i < tower_traps.size; i++ )
|
for ( i = 0; i < tower_traps.size; i++ )
|
||||||
{
|
{
|
||||||
@ -2658,13 +2658,13 @@ get_zone_plane_ramp( zone_name )
|
|||||||
flag_wait( "initial_players_connected" );
|
flag_wait( "initial_players_connected" );
|
||||||
zone = level.zones[zone_name];
|
zone = level.zones[zone_name];
|
||||||
zone.plane_triggers = [];
|
zone.plane_triggers = [];
|
||||||
scr_org = spawn( "script_origin", ( 0, 0, 0 ) );
|
scr_org = sys::spawn( "script_origin", ( 0, 0, 0 ) );
|
||||||
fly_trigger = getent( "plane_fly_trigger", "targetname" );
|
fly_trigger = sys::getent( "plane_fly_trigger", "targetname" );
|
||||||
scr_org.origin = fly_trigger.origin;
|
scr_org.origin = fly_trigger.origin;
|
||||||
|
|
||||||
if ( scr_org entity_in_zone( zone_name, 1 ) )
|
if ( scr_org entity_in_zone( zone_name, 1 ) )
|
||||||
{
|
{
|
||||||
fly_trigger_target = spawn( "script_model", ( 0, 0, 0 ) );
|
fly_trigger_target = sys::spawn( "script_model", ( 0, 0, 0 ) );
|
||||||
fly_trigger_target.targetname = "fly_target";
|
fly_trigger_target.targetname = "fly_target";
|
||||||
fly_trigger.fly_trigger_target = fly_trigger_target;
|
fly_trigger.fly_trigger_target = fly_trigger_target;
|
||||||
fly_trigger_target.fly_trigger = fly_trigger;
|
fly_trigger_target.fly_trigger = fly_trigger;
|
||||||
@ -2777,7 +2777,7 @@ check_plane_valid( player )
|
|||||||
plane_struct.is_locked = 0;
|
plane_struct.is_locked = 0;
|
||||||
plane_struct.locked_cost = undefined;
|
plane_struct.locked_cost = undefined;
|
||||||
plane_struct.lock_fx delete();
|
plane_struct.lock_fx delete();
|
||||||
func = getFunction( "maps/mp/zm_alcatraz_sq", "reset_plane_hint_string" );
|
func = pluto_sys::getfunction( "maps/mp/zm_alcatraz_sq", "reset_plane_hint_string" );
|
||||||
plane_struct [[ func ]]( player );
|
plane_struct [[ func ]]( player );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2879,7 +2879,7 @@ transfer_plane_trigger( from, to )
|
|||||||
|
|
||||||
if ( from == "fly" )
|
if ( from == "fly" )
|
||||||
{
|
{
|
||||||
t_plane_fly = getent( "plane_fly_trigger", "targetname" );
|
t_plane_fly = sys::getent( "plane_fly_trigger", "targetname" );
|
||||||
t_plane_fly sethintstring( &"ZM_PRISON_PLANE_BOARD" );
|
t_plane_fly sethintstring( &"ZM_PRISON_PLANE_BOARD" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,7 @@ init()
|
|||||||
level.enemy_dog_locations = [];
|
level.enemy_dog_locations = [];
|
||||||
flag_init( "dog_clips" );
|
flag_init( "dog_clips" );
|
||||||
precacherumble( "explosion_generic" );
|
precacherumble( "explosion_generic" );
|
||||||
precacheshellshock( "dog_bite" );
|
sys::precacheshellshock( "dog_bite" );
|
||||||
|
|
||||||
if ( getdvar( #"zombie_dog_animset" ) == "" )
|
if ( getdvar( #"zombie_dog_animset" ) == "" )
|
||||||
setdvar( "zombie_dog_animset", "zombie" );
|
setdvar( "zombie_dog_animset", "zombie" );
|
||||||
@ -37,11 +37,11 @@ init()
|
|||||||
level.melee_height_sav = getdvar( #"ai_meleeHeight" );
|
level.melee_height_sav = getdvar( #"ai_meleeHeight" );
|
||||||
setdvar( "dog_MeleeDamage", "100" );
|
setdvar( "dog_MeleeDamage", "100" );
|
||||||
set_zombie_var( "dog_fire_trail_percent", 50 );
|
set_zombie_var( "dog_fire_trail_percent", 50 );
|
||||||
level._effect["lightning_dog_spawn"] = loadfx( "maps/zombie/fx_zombie_dog_lightning_buildup" );
|
level._effect["lightning_dog_spawn"] = sys::loadfx( "maps/zombie/fx_zombie_dog_lightning_buildup" );
|
||||||
level._effect["dog_eye_glow"] = loadfx( "maps/zombie/fx_zombie_dog_eyes" );
|
level._effect["dog_eye_glow"] = sys::loadfx( "maps/zombie/fx_zombie_dog_eyes" );
|
||||||
level._effect["dog_gib"] = loadfx( "maps/zombie/fx_zombie_dog_explosion" );
|
level._effect["dog_gib"] = sys::loadfx( "maps/zombie/fx_zombie_dog_explosion" );
|
||||||
level._effect["dog_trail_fire"] = loadfx( "maps/zombie/fx_zombie_dog_fire_trail" );
|
level._effect["dog_trail_fire"] = sys::loadfx( "maps/zombie/fx_zombie_dog_fire_trail" );
|
||||||
level._effect["dog_trail_ash"] = loadfx( "maps/zombie/fx_zombie_dog_ash_trail" );
|
level._effect["dog_trail_ash"] = sys::loadfx( "maps/zombie/fx_zombie_dog_ash_trail" );
|
||||||
dog_spawner_init();
|
dog_spawner_init();
|
||||||
level thread dog_clip_monitor();
|
level thread dog_clip_monitor();
|
||||||
}
|
}
|
||||||
@ -58,8 +58,8 @@ enable_dog_rounds()
|
|||||||
|
|
||||||
dog_spawner_init()
|
dog_spawner_init()
|
||||||
{
|
{
|
||||||
level.dog_spawners = getentarray( "zombie_dog_spawner", "script_noteworthy" );
|
level.dog_spawners = sys::getentarray( "zombie_dog_spawner", "script_noteworthy" );
|
||||||
later_dogs = getentarray( "later_round_dog_spawners", "script_noteworthy" );
|
later_dogs = sys::getentarray( "later_round_dog_spawners", "script_noteworthy" );
|
||||||
level.dog_spawners = arraycombine( level.dog_spawners, later_dogs, 1, 0 );
|
level.dog_spawners = arraycombine( level.dog_spawners, later_dogs, 1, 0 );
|
||||||
|
|
||||||
if ( level.dog_spawners.size == 0 )
|
if ( level.dog_spawners.size == 0 )
|
||||||
@ -80,13 +80,13 @@ dog_spawner_init()
|
|||||||
assert( level.dog_spawners.size > 0 );
|
assert( level.dog_spawners.size > 0 );
|
||||||
level.dog_health = 100;
|
level.dog_health = 100;
|
||||||
array_thread( level.dog_spawners, ::add_spawn_function, ::dog_init );
|
array_thread( level.dog_spawners, ::add_spawn_function, ::dog_init );
|
||||||
level.enemy_dog_spawns = getentarray( "zombie_spawner_dog_init", "targetname" );
|
level.enemy_dog_spawns = sys::getentarray( "zombie_spawner_dog_init", "targetname" );
|
||||||
}
|
}
|
||||||
|
|
||||||
dog_round_spawning()
|
dog_round_spawning()
|
||||||
{
|
{
|
||||||
level endon( "intermission" );
|
level endon( "intermission" );
|
||||||
level.dog_targets = getplayers();
|
level.dog_targets = sys::getplayers();
|
||||||
|
|
||||||
for ( i = 0; i < level.dog_targets.size; i++ )
|
for ( i = 0; i < level.dog_targets.size; i++ )
|
||||||
level.dog_targets[i].hunted_by = 0;
|
level.dog_targets[i].hunted_by = 0;
|
||||||
@ -103,7 +103,7 @@ dog_round_spawning()
|
|||||||
|
|
||||||
level.dog_intermission = 1;
|
level.dog_intermission = 1;
|
||||||
level thread dog_round_aftermath();
|
level thread dog_round_aftermath();
|
||||||
players = get_players();
|
players = sys::getplayers();
|
||||||
array_thread( players, ::play_dog_round );
|
array_thread( players, ::play_dog_round );
|
||||||
wait 1;
|
wait 1;
|
||||||
playsoundatposition( "vox_zmba_event_dogstart_0", ( 0, 0, 0 ) );
|
playsoundatposition( "vox_zmba_event_dogstart_0", ( 0, 0, 0 ) );
|
||||||
@ -127,7 +127,7 @@ dog_round_spawning()
|
|||||||
for ( num_player_valid = get_number_of_valid_players(); get_current_zombie_count() >= num_player_valid * 2; num_player_valid = get_number_of_valid_players() )
|
for ( num_player_valid = get_number_of_valid_players(); get_current_zombie_count() >= num_player_valid * 2; num_player_valid = get_number_of_valid_players() )
|
||||||
wait 2;
|
wait 2;
|
||||||
|
|
||||||
players = get_players();
|
players = sys::getplayers();
|
||||||
favorite_enemy = get_favorite_enemy();
|
favorite_enemy = get_favorite_enemy();
|
||||||
|
|
||||||
if ( isdefined( level.dog_spawn_func ) )
|
if ( isdefined( level.dog_spawn_func ) )
|
||||||
@ -197,7 +197,7 @@ dog_round_aftermath()
|
|||||||
dog_spawn_fx( ai, ent )
|
dog_spawn_fx( ai, ent )
|
||||||
{
|
{
|
||||||
ai endon( "death" );
|
ai endon( "death" );
|
||||||
ai setfreecameralockonallowed( 0 );
|
ai sys::setfreecameralockonallowed( 0 );
|
||||||
playfx( level._effect["lightning_dog_spawn"], ent.origin );
|
playfx( level._effect["lightning_dog_spawn"], ent.origin );
|
||||||
playsoundatposition( "zmb_hellhound_prespawn", ent.origin );
|
playsoundatposition( "zmb_hellhound_prespawn", ent.origin );
|
||||||
wait 1.5;
|
wait 1.5;
|
||||||
@ -215,8 +215,8 @@ dog_spawn_fx( ai, ent )
|
|||||||
ai zombie_setup_attack_properties_dog();
|
ai zombie_setup_attack_properties_dog();
|
||||||
ai stop_magic_bullet_shield();
|
ai stop_magic_bullet_shield();
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
ai show();
|
ai sys::show();
|
||||||
ai setfreecameralockonallowed( 1 );
|
ai sys::setfreecameralockonallowed( 1 );
|
||||||
ai.ignoreme = 0;
|
ai.ignoreme = 0;
|
||||||
ai notify( "visible" );
|
ai notify( "visible" );
|
||||||
}
|
}
|
||||||
@ -231,9 +231,9 @@ dog_spawn_sumpf_logic( dog_array, favorite_enemy )
|
|||||||
if ( isdefined( level.old_dog_spawn ) && level.old_dog_spawn == dog_array[i] )
|
if ( isdefined( level.old_dog_spawn ) && level.old_dog_spawn == dog_array[i] )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( distancesquared( dog_array[i].origin, favorite_enemy.origin ) > 160000 && distancesquared( dog_array[i].origin, favorite_enemy.origin ) < 640000 )
|
if ( sys::distancesquared( dog_array[i].origin, favorite_enemy.origin ) > 160000 && sys::distancesquared( dog_array[i].origin, favorite_enemy.origin ) < 640000 )
|
||||||
{
|
{
|
||||||
if ( distancesquared( ( 0, 0, dog_array[i].origin[2] ), ( 0, 0, favorite_enemy.origin[2] ) ) > 10000 )
|
if ( sys::distancesquared( ( 0, 0, dog_array[i].origin[2] ), ( 0, 0, favorite_enemy.origin[2] ) ) > 10000 )
|
||||||
continue;
|
continue;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -255,7 +255,7 @@ dog_spawn_factory_logic( dog_array, favorite_enemy )
|
|||||||
if ( isdefined( level.old_dog_spawn ) && level.old_dog_spawn == dog_locs[i] )
|
if ( isdefined( level.old_dog_spawn ) && level.old_dog_spawn == dog_locs[i] )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
dist_squared = distancesquared( dog_locs[i].origin, favorite_enemy.origin );
|
dist_squared = sys::distancesquared( dog_locs[i].origin, favorite_enemy.origin );
|
||||||
|
|
||||||
if ( dist_squared > 160000 && dist_squared < 1000000 )
|
if ( dist_squared > 160000 && dist_squared < 1000000 )
|
||||||
{
|
{
|
||||||
@ -269,7 +269,7 @@ dog_spawn_factory_logic( dog_array, favorite_enemy )
|
|||||||
|
|
||||||
get_favorite_enemy()
|
get_favorite_enemy()
|
||||||
{
|
{
|
||||||
dog_targets = getplayers();
|
dog_targets = sys::getplayers();
|
||||||
least_hunted = dog_targets[0];
|
least_hunted = dog_targets[0];
|
||||||
|
|
||||||
for ( i = 0; i < dog_targets.size; i++ )
|
for ( i = 0; i < dog_targets.size; i++ )
|
||||||
@ -293,7 +293,7 @@ get_favorite_enemy()
|
|||||||
|
|
||||||
dog_health_increase()
|
dog_health_increase()
|
||||||
{
|
{
|
||||||
players = getplayers();
|
players = sys::getplayers();
|
||||||
|
|
||||||
if ( level.dog_round_count == 1 )
|
if ( level.dog_round_count == 1 )
|
||||||
level.dog_health = 400;
|
level.dog_health = 400;
|
||||||
@ -332,7 +332,7 @@ dog_round_tracker()
|
|||||||
level.round_spawn_func = ::dog_round_spawning;
|
level.round_spawn_func = ::dog_round_spawning;
|
||||||
level.next_dog_round = level.round_number + randomintrange( 4, 6 );
|
level.next_dog_round = level.round_number + randomintrange( 4, 6 );
|
||||||
/#
|
/#
|
||||||
get_players()[0] iprintln( "Next dog round: " + level.next_dog_round );
|
sys::getplayers()[0] iprintln( "Next dog round: " + level.next_dog_round );
|
||||||
#/
|
#/
|
||||||
}
|
}
|
||||||
else if ( flag( "dog_round" ) )
|
else if ( flag( "dog_round" ) )
|
||||||
@ -386,7 +386,7 @@ play_dog_round()
|
|||||||
self playlocalsound( "zmb_dog_round_start" );
|
self playlocalsound( "zmb_dog_round_start" );
|
||||||
variation_count = 5;
|
variation_count = 5;
|
||||||
wait 4.5;
|
wait 4.5;
|
||||||
players = getplayers();
|
players = sys::getplayers();
|
||||||
num = randomintrange( 0, players.size );
|
num = randomintrange( 0, players.size );
|
||||||
players[num] maps\mp\zombies\_zm_audio::create_and_play_dialog( "general", "dog_spawn" );
|
players[num] maps\mp\zombies\_zm_audio::create_and_play_dialog( "general", "dog_spawn" );
|
||||||
}
|
}
|
||||||
@ -433,7 +433,7 @@ dog_init()
|
|||||||
self thread dog_run_think();
|
self thread dog_run_think();
|
||||||
self thread dog_stalk_audio();
|
self thread dog_stalk_audio();
|
||||||
self thread maps\mp\zombies\_zm::round_spawn_failsafe();
|
self thread maps\mp\zombies\_zm::round_spawn_failsafe();
|
||||||
self ghost();
|
self sys::ghost();
|
||||||
self thread magic_bullet_shield();
|
self thread magic_bullet_shield();
|
||||||
self dog_fx_eye_glow();
|
self dog_fx_eye_glow();
|
||||||
self dog_fx_trail();
|
self dog_fx_trail();
|
||||||
@ -455,11 +455,11 @@ dog_init()
|
|||||||
|
|
||||||
dog_fx_eye_glow()
|
dog_fx_eye_glow()
|
||||||
{
|
{
|
||||||
self.fx_dog_eye = spawn( "script_model", self gettagorigin( "J_EyeBall_LE" ) );
|
self.fx_dog_eye = sys::spawn( "script_model", self sys::gettagorigin( "J_EyeBall_LE" ) );
|
||||||
assert( isdefined( self.fx_dog_eye ) );
|
assert( isdefined( self.fx_dog_eye ) );
|
||||||
self.fx_dog_eye.angles = self gettagangles( "J_EyeBall_LE" );
|
self.fx_dog_eye.angles = self sys::gettagangles( "J_EyeBall_LE" );
|
||||||
self.fx_dog_eye setmodel( "tag_origin" );
|
self.fx_dog_eye setmodel( "tag_origin" );
|
||||||
self.fx_dog_eye linkto( self, "J_EyeBall_LE" );
|
self.fx_dog_eye sys::linkto( self, "J_EyeBall_LE" );
|
||||||
}
|
}
|
||||||
|
|
||||||
dog_fx_trail()
|
dog_fx_trail()
|
||||||
@ -476,11 +476,11 @@ dog_fx_trail()
|
|||||||
self.fx_dog_trail_sound = "zmb_hellhound_loop_fire";
|
self.fx_dog_trail_sound = "zmb_hellhound_loop_fire";
|
||||||
}
|
}
|
||||||
|
|
||||||
self.fx_dog_trail = spawn( "script_model", self gettagorigin( "tag_origin" ) );
|
self.fx_dog_trail = sys::spawn( "script_model", self sys::gettagorigin( "tag_origin" ) );
|
||||||
assert( isdefined( self.fx_dog_trail ) );
|
assert( isdefined( self.fx_dog_trail ) );
|
||||||
self.fx_dog_trail.angles = self gettagangles( "tag_origin" );
|
self.fx_dog_trail.angles = self sys::gettagangles( "tag_origin" );
|
||||||
self.fx_dog_trail setmodel( "tag_origin" );
|
self.fx_dog_trail setmodel( "tag_origin" );
|
||||||
self.fx_dog_trail linkto( self, "tag_origin" );
|
self.fx_dog_trail sys::linkto( self, "tag_origin" );
|
||||||
}
|
}
|
||||||
|
|
||||||
dog_death()
|
dog_death()
|
||||||
@ -520,7 +520,7 @@ dog_death()
|
|||||||
|
|
||||||
if ( isdefined( self.a.nodeath ) )
|
if ( isdefined( self.a.nodeath ) )
|
||||||
{
|
{
|
||||||
level thread dog_explode_fx( self.origin );
|
dog_explode_fx( self.origin );
|
||||||
self delete();
|
self delete();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -560,7 +560,7 @@ dog_behind_audio()
|
|||||||
|
|
||||||
while ( true )
|
while ( true )
|
||||||
{
|
{
|
||||||
players = get_players();
|
players = sys::getplayers();
|
||||||
|
|
||||||
for ( i = 0; i < players.size; i++ )
|
for ( i = 0; i < players.size; i++ )
|
||||||
{
|
{
|
||||||
@ -583,7 +583,7 @@ dog_behind_audio()
|
|||||||
dog_clip_monitor()
|
dog_clip_monitor()
|
||||||
{
|
{
|
||||||
clips_on = 0;
|
clips_on = 0;
|
||||||
level.dog_clips = getentarray( "dog_clips", "targetname" );
|
level.dog_clips = sys::getentarray( "dog_clips", "targetname" );
|
||||||
|
|
||||||
while ( true )
|
while ( true )
|
||||||
{
|
{
|
||||||
@ -610,7 +610,7 @@ dog_clip_monitor()
|
|||||||
while ( dog_is_alive || flag( "dog_round" ) )
|
while ( dog_is_alive || flag( "dog_round" ) )
|
||||||
{
|
{
|
||||||
dog_is_alive = 0;
|
dog_is_alive = 0;
|
||||||
dogs = getentarray( "zombie_dog", "targetname" );
|
dogs = sys::getentarray( "zombie_dog", "targetname" );
|
||||||
|
|
||||||
for ( i = 0; i < dogs.size; i++ )
|
for ( i = 0; i < dogs.size; i++ )
|
||||||
{
|
{
|
||||||
@ -641,7 +641,7 @@ special_dog_spawn( spawners, num_to_spawn )
|
|||||||
|
|
||||||
while ( count < num_to_spawn )
|
while ( count < num_to_spawn )
|
||||||
{
|
{
|
||||||
players = get_players();
|
players = sys::getplayers();
|
||||||
favorite_enemy = get_favorite_enemy();
|
favorite_enemy = get_favorite_enemy();
|
||||||
|
|
||||||
if ( isdefined( spawners ) )
|
if ( isdefined( spawners ) )
|
||||||
|
@ -35,12 +35,12 @@ precache_fx()
|
|||||||
if ( !isdefined( level.ghost_effects ) )
|
if ( !isdefined( level.ghost_effects ) )
|
||||||
{
|
{
|
||||||
level.ghost_effects = [];
|
level.ghost_effects = [];
|
||||||
level.ghost_effects[1] = loadfx( "maps/zombie_buried/fx_buried_ghost_death" );
|
level.ghost_effects[1] = sys::loadfx( "maps/zombie_buried/fx_buried_ghost_death" );
|
||||||
level.ghost_effects[2] = loadfx( "maps/zombie_buried/fx_buried_ghost_drain" );
|
level.ghost_effects[2] = sys::loadfx( "maps/zombie_buried/fx_buried_ghost_drain" );
|
||||||
level.ghost_effects[3] = loadfx( "maps/zombie_buried/fx_buried_ghost_spawn" );
|
level.ghost_effects[3] = sys::loadfx( "maps/zombie_buried/fx_buried_ghost_spawn" );
|
||||||
level.ghost_effects[4] = loadfx( "maps/zombie_buried/fx_buried_ghost_trail" );
|
level.ghost_effects[4] = sys::loadfx( "maps/zombie_buried/fx_buried_ghost_trail" );
|
||||||
level.ghost_effects[5] = loadfx( "maps/zombie_buried/fx_buried_ghost_evaporation" );
|
level.ghost_effects[5] = sys::loadfx( "maps/zombie_buried/fx_buried_ghost_evaporation" );
|
||||||
level.ghost_impact_effects[1] = loadfx( "maps/zombie_buried/fx_buried_ghost_impact" );
|
level.ghost_impact_effects[1] = sys::loadfx( "maps/zombie_buried/fx_buried_ghost_impact" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -54,14 +54,14 @@ main()
|
|||||||
if ( !init_ghost_spawners() )
|
if ( !init_ghost_spawners() )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
level.slowgun_reset_anim_func = getFunction( "maps/mp/zombies/_zm_weap_slowgun", "reset_anim" );
|
level.slowgun_reset_anim_func = pluto_sys::getfunction( "maps/mp/zombies/_zm_weap_slowgun", "reset_anim" );
|
||||||
level.slowgun_set_anim_rate_func = getFunction( "maps/mp/zombies/_zm_weap_slowgun", "set_anim_rate" );
|
level.slowgun_set_anim_rate_func = pluto_sys::getfunction( "maps/mp/zombies/_zm_weap_slowgun", "set_anim_rate" );
|
||||||
level.slowgun_zombie_slow_for_time = getFunction( "maps/mp/zombies/_zm_weap_slowgun", "zombie_slow_for_time" );
|
level.slowgun_zombie_slow_for_time = pluto_sys::getfunction( "maps/mp/zombies/_zm_weap_slowgun", "zombie_slow_for_time" );
|
||||||
level.time_bomb_get_time_bomb_saved_round_type = getFunction( "maps/mp/zombies/_zm_weap_time_bomb", "get_time_bomb_saved_round_type" );
|
level.time_bomb_get_time_bomb_saved_round_type = pluto_sys::getfunction( "maps/mp/zombies/_zm_weap_time_bomb", "get_time_bomb_saved_round_type" );
|
||||||
level.time_bomb_time_bomb_add_custom_func_global_save = getFunction( "maps/mp/zombies/_zm_weap_time_bomb", "time_bomb_add_custom_func_global_save" );
|
level.time_bomb_time_bomb_add_custom_func_global_save = pluto_sys::getfunction( "maps/mp/zombies/_zm_weap_time_bomb", "time_bomb_add_custom_func_global_save" );
|
||||||
level.time_bomb_time_bomb_add_custom_func_global_restore = getFunction( "maps/mp/zombies/_zm_weap_time_bomb", "time_bomb_add_custom_func_global_restore" );
|
level.time_bomb_time_bomb_add_custom_func_global_restore = pluto_sys::getfunction( "maps/mp/zombies/_zm_weap_time_bomb", "time_bomb_add_custom_func_global_restore" );
|
||||||
level.time_bomb_register_time_bomb_enemy_save_filter = getFunction( "maps/mp/zombies/_zm_weap_time_bomb", "register_time_bomb_enemy_save_filter" );
|
level.time_bomb_register_time_bomb_enemy_save_filter = pluto_sys::getfunction( "maps/mp/zombies/_zm_weap_time_bomb", "register_time_bomb_enemy_save_filter" );
|
||||||
level.time_bomb_register_time_bomb_enemy = getFunction( "maps/mp/zombies/_zm_weap_time_bomb", "register_time_bomb_enemy" );
|
level.time_bomb_register_time_bomb_enemy = pluto_sys::getfunction( "maps/mp/zombies/_zm_weap_time_bomb", "register_time_bomb_enemy" );
|
||||||
|
|
||||||
init_ghost_zone();
|
init_ghost_zone();
|
||||||
init_ghost_sounds();
|
init_ghost_sounds();
|
||||||
@ -70,7 +70,7 @@ main()
|
|||||||
level.zombie_ai_limit_ghost_per_player = 1;
|
level.zombie_ai_limit_ghost_per_player = 1;
|
||||||
level.zombie_ghost_count = 0;
|
level.zombie_ghost_count = 0;
|
||||||
level.ghost_health = 100;
|
level.ghost_health = 100;
|
||||||
level.zombie_ghost_round_states = spawnstruct();
|
level.zombie_ghost_round_states = sys::spawnstruct();
|
||||||
level.zombie_ghost_round_states.any_player_in_ghost_zone = 0;
|
level.zombie_ghost_round_states.any_player_in_ghost_zone = 0;
|
||||||
level.zombie_ghost_round_states.active_zombie_locations = [];
|
level.zombie_ghost_round_states.active_zombie_locations = [];
|
||||||
level.is_ghost_round_started = ::is_ghost_round_started;
|
level.is_ghost_round_started = ::is_ghost_round_started;
|
||||||
@ -117,14 +117,14 @@ init()
|
|||||||
if ( !init_ghost_spawners() )
|
if ( !init_ghost_spawners() )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
level.slowgun_reset_anim_func = getFunction( "maps/mp/zombies/_zm_weap_slowgun", "reset_anim" );
|
level.slowgun_reset_anim_func = pluto_sys::getfunction( "maps/mp/zombies/_zm_weap_slowgun", "reset_anim" );
|
||||||
level.slowgun_set_anim_rate_func = getFunction( "maps/mp/zombies/_zm_weap_slowgun", "set_anim_rate" );
|
level.slowgun_set_anim_rate_func = pluto_sys::getfunction( "maps/mp/zombies/_zm_weap_slowgun", "set_anim_rate" );
|
||||||
level.slowgun_zombie_slow_for_time = getFunction( "maps/mp/zombies/_zm_weap_slowgun", "zombie_slow_for_time" );
|
level.slowgun_zombie_slow_for_time = pluto_sys::getfunction( "maps/mp/zombies/_zm_weap_slowgun", "zombie_slow_for_time" );
|
||||||
level.time_bomb_get_time_bomb_saved_round_type = getFunction( "maps/mp/zombies/_zm_weap_time_bomb", "get_time_bomb_saved_round_type" );
|
level.time_bomb_get_time_bomb_saved_round_type = pluto_sys::getfunction( "maps/mp/zombies/_zm_weap_time_bomb", "get_time_bomb_saved_round_type" );
|
||||||
level.time_bomb_time_bomb_add_custom_func_global_save = getFunction( "maps/mp/zombies/_zm_weap_time_bomb", "time_bomb_add_custom_func_global_save" );
|
level.time_bomb_time_bomb_add_custom_func_global_save = pluto_sys::getfunction( "maps/mp/zombies/_zm_weap_time_bomb", "time_bomb_add_custom_func_global_save" );
|
||||||
level.time_bomb_time_bomb_add_custom_func_global_restore = getFunction( "maps/mp/zombies/_zm_weap_time_bomb", "time_bomb_add_custom_func_global_restore" );
|
level.time_bomb_time_bomb_add_custom_func_global_restore = pluto_sys::getfunction( "maps/mp/zombies/_zm_weap_time_bomb", "time_bomb_add_custom_func_global_restore" );
|
||||||
level.time_bomb_register_time_bomb_enemy_save_filter = getFunction( "maps/mp/zombies/_zm_weap_time_bomb", "register_time_bomb_enemy_save_filter" );
|
level.time_bomb_register_time_bomb_enemy_save_filter = pluto_sys::getfunction( "maps/mp/zombies/_zm_weap_time_bomb", "register_time_bomb_enemy_save_filter" );
|
||||||
level.time_bomb_register_time_bomb_enemy = getFunction( "maps/mp/zombies/_zm_weap_time_bomb", "register_time_bomb_enemy" );
|
level.time_bomb_register_time_bomb_enemy = pluto_sys::getfunction( "maps/mp/zombies/_zm_weap_time_bomb", "register_time_bomb_enemy" );
|
||||||
|
|
||||||
init_ghost_zone();
|
init_ghost_zone();
|
||||||
init_ghost_sounds();
|
init_ghost_sounds();
|
||||||
@ -133,7 +133,7 @@ init()
|
|||||||
level.zombie_ai_limit_ghost_per_player = 1;
|
level.zombie_ai_limit_ghost_per_player = 1;
|
||||||
level.zombie_ghost_count = 0;
|
level.zombie_ghost_count = 0;
|
||||||
level.ghost_health = 100;
|
level.ghost_health = 100;
|
||||||
level.zombie_ghost_round_states = spawnstruct();
|
level.zombie_ghost_round_states = sys::spawnstruct();
|
||||||
level.zombie_ghost_round_states.any_player_in_ghost_zone = 0;
|
level.zombie_ghost_round_states.any_player_in_ghost_zone = 0;
|
||||||
level.zombie_ghost_round_states.active_zombie_locations = [];
|
level.zombie_ghost_round_states.active_zombie_locations = [];
|
||||||
level.is_ghost_round_started = ::is_ghost_round_started;
|
level.is_ghost_round_started = ::is_ghost_round_started;
|
||||||
@ -172,7 +172,7 @@ init()
|
|||||||
|
|
||||||
init_ghost_spawners()
|
init_ghost_spawners()
|
||||||
{
|
{
|
||||||
level.ghost_spawners = getentarray( "ghost_zombie_spawner", "script_noteworthy" );
|
level.ghost_spawners = sys::getentarray( "ghost_zombie_spawner", "script_noteworthy" );
|
||||||
|
|
||||||
if ( level.ghost_spawners.size == 0 )
|
if ( level.ghost_spawners.size == 0 )
|
||||||
return false;
|
return false;
|
||||||
@ -223,8 +223,8 @@ init_ghost_sounds()
|
|||||||
|
|
||||||
init_ghost_zone()
|
init_ghost_zone()
|
||||||
{
|
{
|
||||||
level.ghost_start_area = getent( "ghost_start_area", "targetname" );
|
level.ghost_start_area = sys::getent( "ghost_start_area", "targetname" );
|
||||||
level.ghost_zone_door_clips = getentarray( "ghost_zone_door_clip", "targetname" );
|
level.ghost_zone_door_clips = sys::getentarray( "ghost_zone_door_clip", "targetname" );
|
||||||
enable_ghost_zone_door_ai_clips();
|
enable_ghost_zone_door_ai_clips();
|
||||||
level.ghost_zone_start_lower_locations = getstructarray( "ghost_zone_start_lower_location", "targetname" );
|
level.ghost_zone_start_lower_locations = getstructarray( "ghost_zone_start_lower_location", "targetname" );
|
||||||
level.ghost_drop_down_locations = getstructarray( "ghost_start_zone_spawners", "targetname" );
|
level.ghost_drop_down_locations = getstructarray( "ghost_start_zone_spawners", "targetname" );
|
||||||
@ -232,12 +232,12 @@ init_ghost_zone()
|
|||||||
level.ghost_back_standing_locations = getstructarray( "ghost_back_standing_location", "targetname" );
|
level.ghost_back_standing_locations = getstructarray( "ghost_back_standing_location", "targetname" );
|
||||||
level.ghost_front_flying_out_path_starts = getstructarray( "ghost_front_flying_out_path_start", "targetname" );
|
level.ghost_front_flying_out_path_starts = getstructarray( "ghost_front_flying_out_path_start", "targetname" );
|
||||||
level.ghost_back_flying_out_path_starts = getstructarray( "ghost_back_flying_out_path_start", "targetname" );
|
level.ghost_back_flying_out_path_starts = getstructarray( "ghost_back_flying_out_path_start", "targetname" );
|
||||||
level.ghost_gazebo_pit_volume = getent( "sloth_pack_volume", "targetname" );
|
level.ghost_gazebo_pit_volume = sys::getent( "sloth_pack_volume", "targetname" );
|
||||||
level.ghost_gazebo_pit_perk_pos = getstruct( "ghost_gazebo_pit_perk_pos", "targetname" );
|
level.ghost_gazebo_pit_perk_pos = getstruct( "ghost_gazebo_pit_perk_pos", "targetname" );
|
||||||
level.ghost_entry_room_to_mansion = "ghost_to_maze_zone_1";
|
level.ghost_entry_room_to_mansion = "ghost_to_maze_zone_1";
|
||||||
level.ghost_entry_room_to_maze = "ghost_to_maze_zone_5";
|
level.ghost_entry_room_to_maze = "ghost_to_maze_zone_5";
|
||||||
level.ghost_rooms = [];
|
level.ghost_rooms = [];
|
||||||
a_rooms = getentarray( "ghost_zone", "script_noteworthy" );
|
a_rooms = sys::getentarray( "ghost_zone", "script_noteworthy" );
|
||||||
|
|
||||||
foreach ( room in a_rooms )
|
foreach ( room in a_rooms )
|
||||||
{
|
{
|
||||||
@ -245,7 +245,7 @@ init_ghost_zone()
|
|||||||
|
|
||||||
if ( !isdefined( level.ghost_rooms[str_targetname] ) )
|
if ( !isdefined( level.ghost_rooms[str_targetname] ) )
|
||||||
{
|
{
|
||||||
level.ghost_rooms[str_targetname] = spawnstruct();
|
level.ghost_rooms[str_targetname] = sys::spawnstruct();
|
||||||
level.ghost_rooms[str_targetname].ghost_spawn_locations = [];
|
level.ghost_rooms[str_targetname].ghost_spawn_locations = [];
|
||||||
level.ghost_rooms[str_targetname].volumes = [];
|
level.ghost_rooms[str_targetname].volumes = [];
|
||||||
level.ghost_rooms[str_targetname].name = str_targetname;
|
level.ghost_rooms[str_targetname].name = str_targetname;
|
||||||
@ -320,7 +320,7 @@ ghost_zone_spawning_think()
|
|||||||
|
|
||||||
while ( valid_player_count < 1 )
|
while ( valid_player_count < 1 )
|
||||||
{
|
{
|
||||||
players = getplayers();
|
players = sys::getplayers();
|
||||||
valid_player_count = 0;
|
valid_player_count = 0;
|
||||||
|
|
||||||
foreach ( player in players )
|
foreach ( player in players )
|
||||||
@ -394,7 +394,7 @@ is_player_in_ghost_room( player, room )
|
|||||||
{
|
{
|
||||||
foreach ( volume in room.volumes )
|
foreach ( volume in room.volumes )
|
||||||
{
|
{
|
||||||
if ( player istouching( volume ) )
|
if ( player sys::istouching( volume ) )
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -434,7 +434,7 @@ player_in_ghost_zone_monitor()
|
|||||||
{
|
{
|
||||||
if ( isdefined( level.zombie_ghost_round_states.any_player_in_ghost_zone ) && level.zombie_ghost_round_states.any_player_in_ghost_zone )
|
if ( isdefined( level.zombie_ghost_round_states.any_player_in_ghost_zone ) && level.zombie_ghost_round_states.any_player_in_ghost_zone )
|
||||||
{
|
{
|
||||||
players = getplayers();
|
players = sys::getplayers();
|
||||||
|
|
||||||
foreach ( player in players )
|
foreach ( player in players )
|
||||||
{
|
{
|
||||||
@ -475,13 +475,13 @@ player_in_ghost_zone_monitor()
|
|||||||
|
|
||||||
is_any_player_near_point( target, spawn_pos )
|
is_any_player_near_point( target, spawn_pos )
|
||||||
{
|
{
|
||||||
players = getplayers();
|
players = sys::getplayers();
|
||||||
|
|
||||||
foreach ( player in players )
|
foreach ( player in players )
|
||||||
{
|
{
|
||||||
if ( target != player && is_player_valid( player ) )
|
if ( target != player && is_player_valid( player ) )
|
||||||
{
|
{
|
||||||
dist_squared = distancesquared( player.origin, spawn_pos );
|
dist_squared = sys::distancesquared( player.origin, spawn_pos );
|
||||||
|
|
||||||
if ( dist_squared < 84 * 84 )
|
if ( dist_squared < 84 * 84 )
|
||||||
return true;
|
return true;
|
||||||
@ -493,7 +493,7 @@ is_any_player_near_point( target, spawn_pos )
|
|||||||
|
|
||||||
is_in_start_area()
|
is_in_start_area()
|
||||||
{
|
{
|
||||||
if ( isdefined( level.ghost_start_area ) && self istouching( level.ghost_start_area ) )
|
if ( isdefined( level.ghost_start_area ) && self sys::istouching( level.ghost_start_area ) )
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
@ -558,7 +558,7 @@ get_best_spawn_point( player )
|
|||||||
check_players_in_ghost_zone()
|
check_players_in_ghost_zone()
|
||||||
{
|
{
|
||||||
result = 0;
|
result = 0;
|
||||||
players = getplayers();
|
players = sys::getplayers();
|
||||||
|
|
||||||
foreach ( player in players )
|
foreach ( player in players )
|
||||||
{
|
{
|
||||||
@ -640,7 +640,7 @@ prespawn()
|
|||||||
self.noplayermeleeblood = 1;
|
self.noplayermeleeblood = 1;
|
||||||
self.paralyzer_hit_callback = ::paralyzer_callback;
|
self.paralyzer_hit_callback = ::paralyzer_callback;
|
||||||
self.paralyzer_slowtime = 0;
|
self.paralyzer_slowtime = 0;
|
||||||
self.paralyzer_score_time_ms = gettime();
|
self.paralyzer_score_time_ms = sys::gettime();
|
||||||
self.ignore_slowgun_anim_rates = undefined;
|
self.ignore_slowgun_anim_rates = undefined;
|
||||||
self.reset_anim = ::ghost_reset_anim;
|
self.reset_anim = ::ghost_reset_anim;
|
||||||
self.custom_springpad_fling = ::ghost_springpad_fling;
|
self.custom_springpad_fling = ::ghost_springpad_fling;
|
||||||
@ -663,7 +663,7 @@ prespawn()
|
|||||||
}
|
}
|
||||||
|
|
||||||
self set_zombie_run_cycle( "run" );
|
self set_zombie_run_cycle( "run" );
|
||||||
self setanimstatefromasd( "zm_move_run" );
|
self sys::setanimstatefromasd( "zm_move_run" );
|
||||||
self.actor_damage_func = ::ghost_damage_func;
|
self.actor_damage_func = ::ghost_damage_func;
|
||||||
self.deathfunction = ::ghost_death_func;
|
self.deathfunction = ::ghost_death_func;
|
||||||
self.maxhealth = level.ghost_health;
|
self.maxhealth = level.ghost_health;
|
||||||
@ -672,8 +672,8 @@ prespawn()
|
|||||||
self notify( "zombie_init_done" );
|
self notify( "zombie_init_done" );
|
||||||
self.allowpain = 0;
|
self.allowpain = 0;
|
||||||
self.ignore_nuke = 1;
|
self.ignore_nuke = 1;
|
||||||
self animmode( "normal" );
|
self sys::animmode( "normal" );
|
||||||
self orientmode( "face enemy" );
|
self sys::orientmode( "face enemy" );
|
||||||
self bloodimpact( "none" );
|
self bloodimpact( "none" );
|
||||||
self disableaimassist();
|
self disableaimassist();
|
||||||
self.forcemovementscriptstate = 0;
|
self.forcemovementscriptstate = 0;
|
||||||
@ -683,7 +683,7 @@ prespawn()
|
|||||||
self.pathenemyfightdist = 0;
|
self.pathenemyfightdist = 0;
|
||||||
|
|
||||||
self maps\mp\zombies\_zm_spawner::zombie_complete_emerging_into_playable_area();
|
self maps\mp\zombies\_zm_spawner::zombie_complete_emerging_into_playable_area();
|
||||||
self setfreecameralockonallowed( 0 );
|
self sys::setfreecameralockonallowed( 0 );
|
||||||
self.startinglocation = self.origin;
|
self.startinglocation = self.origin;
|
||||||
|
|
||||||
if ( isdefined( level.ghost_custom_think_logic ) )
|
if ( isdefined( level.ghost_custom_think_logic ) )
|
||||||
@ -781,7 +781,7 @@ ghost_reset_anim()
|
|||||||
substate = self getanimsubstatefromasd();
|
substate = self getanimsubstatefromasd();
|
||||||
|
|
||||||
if ( animstate == "zm_death" )
|
if ( animstate == "zm_death" )
|
||||||
self setanimstatefromasd( "zm_death_no_restart", substate );
|
self sys::setanimstatefromasd( "zm_death_no_restart", substate );
|
||||||
else if ( isDefined( level.slowgun_reset_anim_func ) )
|
else if ( isDefined( level.slowgun_reset_anim_func ) )
|
||||||
self [[ level.slowgun_reset_anim_func ]]();
|
self [[ level.slowgun_reset_anim_func ]]();
|
||||||
}
|
}
|
||||||
@ -791,7 +791,7 @@ wait_ghost_ghost( time )
|
|||||||
wait( time );
|
wait( time );
|
||||||
|
|
||||||
if ( isdefined( self ) )
|
if ( isdefined( self ) )
|
||||||
self ghost();
|
self sys::ghost();
|
||||||
}
|
}
|
||||||
|
|
||||||
ghost_death_func()
|
ghost_death_func()
|
||||||
@ -809,7 +809,7 @@ ghost_death_func()
|
|||||||
self thread [[ self.extra_custom_death_logic ]]();
|
self thread [[ self.extra_custom_death_logic ]]();
|
||||||
|
|
||||||
qrate = self getclientfield( "anim_rate" );
|
qrate = self getclientfield( "anim_rate" );
|
||||||
self setanimstatefromasd( "zm_death" );
|
self sys::setanimstatefromasd( "zm_death" );
|
||||||
self thread wait_ghost_ghost( self getanimlengthfromasd( "zm_death", 0 ) );
|
self thread wait_ghost_ghost( self getanimlengthfromasd( "zm_death", 0 ) );
|
||||||
maps\mp\animscripts\zm_shared::donotetracks( "death_anim" );
|
maps\mp\animscripts\zm_shared::donotetracks( "death_anim" );
|
||||||
|
|
||||||
@ -930,7 +930,7 @@ ghost_think()
|
|||||||
|
|
||||||
start_spawn()
|
start_spawn()
|
||||||
{
|
{
|
||||||
self animscripted( self.origin, self.angles, "zm_spawn" );
|
self sys::animscripted( self.origin, self.angles, "zm_spawn" );
|
||||||
self maps\mp\animscripts\zm_shared::donotetracks( "spawn_anim" );
|
self maps\mp\animscripts\zm_shared::donotetracks( "spawn_anim" );
|
||||||
self start_chase();
|
self start_chase();
|
||||||
}
|
}
|
||||||
@ -972,9 +972,9 @@ find_flesh()
|
|||||||
else if ( isdefined( self.is_spawned_in_ghost_zone ) && self.is_spawned_in_ghost_zone )
|
else if ( isdefined( self.is_spawned_in_ghost_zone ) && self.is_spawned_in_ghost_zone )
|
||||||
self.find_target = 1;
|
self.find_target = 1;
|
||||||
|
|
||||||
self.zombie_path_timer = gettime() + randomfloatrange( 1, 3 ) * 1000;
|
self.zombie_path_timer = sys::gettime() + randomfloatrange( 1, 3 ) * 1000;
|
||||||
|
|
||||||
while ( gettime() < self.zombie_path_timer )
|
while ( sys::gettime() < self.zombie_path_timer )
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
|
|
||||||
self notify( "path_timer_done" );
|
self notify( "path_timer_done" );
|
||||||
@ -987,7 +987,7 @@ find_flesh()
|
|||||||
get_closest_valid_player( origin )
|
get_closest_valid_player( origin )
|
||||||
{
|
{
|
||||||
valid_player_found = 0;
|
valid_player_found = 0;
|
||||||
players = get_players();
|
players = sys::getplayers();
|
||||||
|
|
||||||
while ( !valid_player_found )
|
while ( !valid_player_found )
|
||||||
{
|
{
|
||||||
@ -1055,7 +1055,7 @@ get_closest_player( origin, players )
|
|||||||
|
|
||||||
does_fall_into_pap_hole()
|
does_fall_into_pap_hole()
|
||||||
{
|
{
|
||||||
if ( isDefined( level.ghost_gazebo_pit_volume ) && self istouching( level.ghost_gazebo_pit_volume ) )
|
if ( isDefined( level.ghost_gazebo_pit_volume ) && self sys::istouching( level.ghost_gazebo_pit_volume ) )
|
||||||
{
|
{
|
||||||
self forceteleport( level.ghost_gazebo_pit_perk_pos.origin, ( 0, 0, 0 ) );
|
self forceteleport( level.ghost_gazebo_pit_perk_pos.origin, ( 0, 0, 0 ) );
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
@ -1067,9 +1067,9 @@ does_fall_into_pap_hole()
|
|||||||
|
|
||||||
start_script_move()
|
start_script_move()
|
||||||
{
|
{
|
||||||
self.script_mover = spawn( "script_origin", self.origin );
|
self.script_mover = sys::spawn( "script_origin", self.origin );
|
||||||
self.script_mover.angles = self.angles;
|
self.script_mover.angles = self.angles;
|
||||||
self linkto( self.script_mover );
|
self sys::linkto( self.script_mover );
|
||||||
self.state = "script_move_update";
|
self.state = "script_move_update";
|
||||||
self setclientfield( "ghost_fx", 4 );
|
self setclientfield( "ghost_fx", 4 );
|
||||||
player = self.favoriteenemy;
|
player = self.favoriteenemy;
|
||||||
@ -1133,8 +1133,8 @@ script_move_update()
|
|||||||
|
|
||||||
if ( is_player_valid( player ) && isdefined( self.script_move_target_node ) )
|
if ( is_player_valid( player ) && isdefined( self.script_move_target_node ) )
|
||||||
{
|
{
|
||||||
desired_angles = vectortoangles( vectornormalize( player.origin - self.origin ) );
|
desired_angles = vectortoangles( sys::vectornormalize( player.origin - self.origin ) );
|
||||||
distance_squared = distancesquared( self.origin, self.script_move_target_node.origin );
|
distance_squared = sys::distancesquared( self.origin, self.script_move_target_node.origin );
|
||||||
|
|
||||||
if ( distance_squared < 24 )
|
if ( distance_squared < 24 )
|
||||||
{
|
{
|
||||||
@ -1150,7 +1150,7 @@ script_move_update()
|
|||||||
|
|
||||||
draw_debug_star( self.script_move_target_node.origin, ( 0, 0, 1 ), 1 );
|
draw_debug_star( self.script_move_target_node.origin, ( 0, 0, 1 ), 1 );
|
||||||
target_node_pos = self.script_move_target_node.origin + vectorscale( ( 0, 0, 1 ), 36.0 );
|
target_node_pos = self.script_move_target_node.origin + vectorscale( ( 0, 0, 1 ), 36.0 );
|
||||||
distance_squared_to_target_node_pos = distancesquared( self.origin, target_node_pos );
|
distance_squared_to_target_node_pos = sys::distancesquared( self.origin, target_node_pos );
|
||||||
moved_distance_during_interval = 80.0;
|
moved_distance_during_interval = 80.0;
|
||||||
|
|
||||||
if ( distance_squared_to_target_node_pos <= moved_distance_during_interval * moved_distance_during_interval )
|
if ( distance_squared_to_target_node_pos <= moved_distance_during_interval * moved_distance_during_interval )
|
||||||
@ -1162,7 +1162,7 @@ script_move_update()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
distance_squared_to_player = distancesquared( self.origin, player.origin );
|
distance_squared_to_player = sys::distancesquared( self.origin, player.origin );
|
||||||
|
|
||||||
if ( distance_squared_to_player < 540 && !( isdefined( self.script_mover.search_target_node_again ) && self.script_mover.search_target_node_again ) )
|
if ( distance_squared_to_player < 540 && !( isdefined( self.script_mover.search_target_node_again ) && self.script_mover.search_target_node_again ) )
|
||||||
{
|
{
|
||||||
@ -1174,7 +1174,7 @@ script_move_update()
|
|||||||
self.script_move_sin_index = 0;
|
self.script_move_sin_index = 0;
|
||||||
|
|
||||||
move_dir = target_node_pos - self.origin;
|
move_dir = target_node_pos - self.origin;
|
||||||
move_dir = vectornormalize( move_dir );
|
move_dir = sys::vectornormalize( move_dir );
|
||||||
target_point = self.origin + move_dir * 800 * 0.1;
|
target_point = self.origin + move_dir * 800 * 0.1;
|
||||||
x_offset = level.ghost_script_move_sin[self.script_move_sin_index] * 6;
|
x_offset = level.ghost_script_move_sin[self.script_move_sin_index] * 6;
|
||||||
z_offset = level.ghost_script_move_sin[self.script_move_sin_index] * 12;
|
z_offset = level.ghost_script_move_sin[self.script_move_sin_index] * 12;
|
||||||
@ -1197,7 +1197,7 @@ remove_script_mover()
|
|||||||
if ( isdefined( self.script_mover ) )
|
if ( isdefined( self.script_mover ) )
|
||||||
{
|
{
|
||||||
self dontinterpolate();
|
self dontinterpolate();
|
||||||
self unlink();
|
self sys::unlink();
|
||||||
self.script_mover delete();
|
self.script_mover delete();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1205,7 +1205,7 @@ remove_script_mover()
|
|||||||
start_chase()
|
start_chase()
|
||||||
{
|
{
|
||||||
self set_zombie_run_cycle( "run" );
|
self set_zombie_run_cycle( "run" );
|
||||||
self setanimstatefromasd( "zm_move_run" );
|
self sys::setanimstatefromasd( "zm_move_run" );
|
||||||
self.state = "chase_update";
|
self.state = "chase_update";
|
||||||
self setclientfield( "ghost_fx", 4 );
|
self setclientfield( "ghost_fx", 4 );
|
||||||
}
|
}
|
||||||
@ -1247,7 +1247,7 @@ chase_update()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
distsquared = distancesquared( self.origin, player.origin );
|
distsquared = sys::distancesquared( self.origin, player.origin );
|
||||||
|
|
||||||
if ( distsquared > 300 * 300 )
|
if ( distsquared > 300 * 300 )
|
||||||
{
|
{
|
||||||
@ -1281,7 +1281,7 @@ chase_update()
|
|||||||
self set_zombie_run_cycle( "run" );
|
self set_zombie_run_cycle( "run" );
|
||||||
|
|
||||||
if ( self getanimstatefromasd() != "zm_move_run" )
|
if ( self getanimstatefromasd() != "zm_move_run" )
|
||||||
self setanimstatefromasd( "zm_move_run" );
|
self sys::setanimstatefromasd( "zm_move_run" );
|
||||||
|
|
||||||
self start_runaway();
|
self start_runaway();
|
||||||
}
|
}
|
||||||
@ -1294,7 +1294,7 @@ need_wait()
|
|||||||
|
|
||||||
start_wait()
|
start_wait()
|
||||||
{
|
{
|
||||||
self setanimstatefromasd( "zm_idle" );
|
self sys::setanimstatefromasd( "zm_idle" );
|
||||||
self setclientfield( "ghost_fx", 4 );
|
self setclientfield( "ghost_fx", 4 );
|
||||||
self.state = "wait_update";
|
self.state = "wait_update";
|
||||||
}
|
}
|
||||||
@ -1326,7 +1326,7 @@ wait_update()
|
|||||||
self set_zombie_run_cycle( "run" );
|
self set_zombie_run_cycle( "run" );
|
||||||
|
|
||||||
if ( self getanimstatefromasd() != "zm_move_run" )
|
if ( self getanimstatefromasd() != "zm_move_run" )
|
||||||
self setanimstatefromasd( "zm_move_run" );
|
self sys::setanimstatefromasd( "zm_move_run" );
|
||||||
|
|
||||||
self setclientfield( "ghost_fx", 4 );
|
self setclientfield( "ghost_fx", 4 );
|
||||||
self start_runaway();
|
self start_runaway();
|
||||||
@ -1353,8 +1353,8 @@ start_evaporate( need_deletion )
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
self.state = "evaporate_update";
|
self.state = "evaporate_update";
|
||||||
self ghost();
|
self sys::ghost();
|
||||||
self notsolid();
|
self sys::notsolid();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1385,19 +1385,19 @@ evaporate_update()
|
|||||||
}
|
}
|
||||||
else if ( is_player_valid( player ) )
|
else if ( is_player_valid( player ) )
|
||||||
{
|
{
|
||||||
self solid();
|
self sys::solid();
|
||||||
self show();
|
self sys::show();
|
||||||
self start_chase();
|
self start_chase();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
is_within_capsule( point, origin, angles, radius, range )
|
is_within_capsule( point, origin, angles, radius, range )
|
||||||
{
|
{
|
||||||
forward_dir = vectornormalize( anglestoforward( angles ) );
|
forward_dir = sys::vectornormalize( anglestoforward( angles ) );
|
||||||
start = origin + forward_dir * radius;
|
start = origin + forward_dir * radius;
|
||||||
end = start + forward_dir * range;
|
end = start + forward_dir * range;
|
||||||
point_intersect = pointonsegmentnearesttopoint( start, end, point );
|
point_intersect = pointonsegmentnearesttopoint( start, end, point );
|
||||||
distance_squared = distancesquared( point_intersect, point );
|
distance_squared = sys::distancesquared( point_intersect, point );
|
||||||
|
|
||||||
if ( distance_squared <= radius * radius )
|
if ( distance_squared <= radius * radius )
|
||||||
return true;
|
return true;
|
||||||
@ -1419,18 +1419,18 @@ get_dot_production_2d( point, origin, angles )
|
|||||||
{
|
{
|
||||||
forward_dir = anglestoforward( angles );
|
forward_dir = anglestoforward( angles );
|
||||||
forward_dir = ( forward_dir[0], forward_dir[1], 0 );
|
forward_dir = ( forward_dir[0], forward_dir[1], 0 );
|
||||||
forward_dir = vectornormalize( forward_dir );
|
forward_dir = sys::vectornormalize( forward_dir );
|
||||||
to_point_dir = point - origin;
|
to_point_dir = point - origin;
|
||||||
to_point_dir = ( to_point_dir[0], to_point_dir[1], 0 );
|
to_point_dir = ( to_point_dir[0], to_point_dir[1], 0 );
|
||||||
to_point_dir = vectornormalize( to_point_dir );
|
to_point_dir = sys::vectornormalize( to_point_dir );
|
||||||
return vectordot( forward_dir, to_point_dir );
|
return sys::vectordot( forward_dir, to_point_dir );
|
||||||
}
|
}
|
||||||
|
|
||||||
is_in_room( room )
|
is_in_room( room )
|
||||||
{
|
{
|
||||||
foreach ( volume in room.volumes )
|
foreach ( volume in room.volumes )
|
||||||
{
|
{
|
||||||
if ( self istouching( volume ) )
|
if ( self sys::istouching( volume ) )
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1492,7 +1492,7 @@ can_drain_points( self_pos, target_pos )
|
|||||||
if ( isdefined( self.force_killable ) && self.force_killable )
|
if ( isdefined( self.force_killable ) && self.force_killable )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
dist = distancesquared( self_pos, target_pos );
|
dist = sys::distancesquared( self_pos, target_pos );
|
||||||
|
|
||||||
if ( dist < 60 * 60 )
|
if ( dist < 60 * 60 )
|
||||||
return true;
|
return true;
|
||||||
@ -1507,13 +1507,13 @@ set_chase_status( move_speed )
|
|||||||
if ( self.zombie_move_speed != move_speed )
|
if ( self.zombie_move_speed != move_speed )
|
||||||
{
|
{
|
||||||
self set_zombie_run_cycle( move_speed );
|
self set_zombie_run_cycle( move_speed );
|
||||||
self setanimstatefromasd( "zm_move_" + move_speed );
|
self sys::setanimstatefromasd( "zm_move_" + move_speed );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
start_drain()
|
start_drain()
|
||||||
{
|
{
|
||||||
self setanimstatefromasd( "zm_drain" );
|
self sys::setanimstatefromasd( "zm_drain" );
|
||||||
self setclientfield( "ghost_fx", 2 );
|
self setclientfield( "ghost_fx", 2 );
|
||||||
self.state = "drain_update";
|
self.state = "drain_update";
|
||||||
}
|
}
|
||||||
@ -1530,9 +1530,9 @@ drain_update()
|
|||||||
if ( can_drain_points( self.origin, player.origin ) )
|
if ( can_drain_points( self.origin, player.origin ) )
|
||||||
{
|
{
|
||||||
if ( self getanimstatefromasd() != "zm_drain" )
|
if ( self getanimstatefromasd() != "zm_drain" )
|
||||||
self setanimstatefromasd( "zm_drain" );
|
self sys::setanimstatefromasd( "zm_drain" );
|
||||||
|
|
||||||
self orientmode( "face enemy" );
|
self sys::orientmode( "face enemy" );
|
||||||
|
|
||||||
if ( !( isdefined( self.is_draining ) && self.is_draining ) )
|
if ( !( isdefined( self.is_draining ) && self.is_draining ) )
|
||||||
self thread drain_player( player );
|
self thread drain_player( player );
|
||||||
@ -1545,7 +1545,7 @@ drain_update()
|
|||||||
self set_zombie_run_cycle( "run" );
|
self set_zombie_run_cycle( "run" );
|
||||||
|
|
||||||
if ( self getanimstatefromasd() != "zm_move_run" )
|
if ( self getanimstatefromasd() != "zm_move_run" )
|
||||||
self setanimstatefromasd( "zm_move_run" );
|
self sys::setanimstatefromasd( "zm_move_run" );
|
||||||
|
|
||||||
self setclientfield( "ghost_fx", 4 );
|
self setclientfield( "ghost_fx", 4 );
|
||||||
self start_runaway();
|
self start_runaway();
|
||||||
@ -1611,14 +1611,14 @@ start_runaway()
|
|||||||
{
|
{
|
||||||
wait 2;
|
wait 2;
|
||||||
self.state = "runaway_update";
|
self.state = "runaway_update";
|
||||||
self setgoalpos( self.startinglocation );
|
self sys::setgoalpos( self.startinglocation );
|
||||||
self set_chase_status( "run" );
|
self set_chase_status( "run" );
|
||||||
}
|
}
|
||||||
|
|
||||||
does_reach_runaway_goal()
|
does_reach_runaway_goal()
|
||||||
{
|
{
|
||||||
result = 0;
|
result = 0;
|
||||||
dist_squared = distancesquared( self.origin, self.startinglocation );
|
dist_squared = sys::distancesquared( self.origin, self.startinglocation );
|
||||||
|
|
||||||
if ( dist_squared < 60 * 60 )
|
if ( dist_squared < 60 * 60 )
|
||||||
result = 1;
|
result = 1;
|
||||||
@ -1656,7 +1656,7 @@ runaway_update()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
self setgoalpos( self.startinglocation );
|
self sys::setgoalpos( self.startinglocation );
|
||||||
/#
|
/#
|
||||||
draw_debug_star( self.startinglocation, ( 0, 0, 1 ), 1 );
|
draw_debug_star( self.startinglocation, ( 0, 0, 1 ), 1 );
|
||||||
draw_debug_line( self.origin, self.startinglocation, ( 0, 1, 0 ), 1, 0 );
|
draw_debug_line( self.origin, self.startinglocation, ( 0, 1, 0 ), 1, 0 );
|
||||||
@ -1851,7 +1851,7 @@ enable_ghost_zone_door_ai_clips()
|
|||||||
{
|
{
|
||||||
foreach ( door_clip in level.ghost_zone_door_clips )
|
foreach ( door_clip in level.ghost_zone_door_clips )
|
||||||
{
|
{
|
||||||
door_clip solid();
|
door_clip sys::solid();
|
||||||
door_clip disconnectpaths();
|
door_clip disconnectpaths();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1863,7 +1863,7 @@ disable_ghost_zone_door_ai_clips()
|
|||||||
{
|
{
|
||||||
foreach ( door_clip in level.ghost_zone_door_clips )
|
foreach ( door_clip in level.ghost_zone_door_clips )
|
||||||
{
|
{
|
||||||
door_clip notsolid();
|
door_clip sys::notsolid();
|
||||||
door_clip connectpaths();
|
door_clip connectpaths();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1881,7 +1881,7 @@ clear_all_active_zombies()
|
|||||||
{
|
{
|
||||||
if ( !( isdefined( zombie.is_ghost ) && zombie.is_ghost ) )
|
if ( !( isdefined( zombie.is_ghost ) && zombie.is_ghost ) )
|
||||||
{
|
{
|
||||||
spawn_point = spawnstruct();
|
spawn_point = sys::spawnstruct();
|
||||||
spawn_point.origin = zombie.origin;
|
spawn_point.origin = zombie.origin;
|
||||||
spawn_point.angles = zombie.angles;
|
spawn_point.angles = zombie.angles;
|
||||||
|
|
||||||
@ -2013,7 +2013,7 @@ should_last_ghost_drop_powerup()
|
|||||||
sndghostroundmus()
|
sndghostroundmus()
|
||||||
{
|
{
|
||||||
level endon( "ghost_round_end" );
|
level endon( "ghost_round_end" );
|
||||||
ent = spawn( "script_origin", ( 0, 0, 0 ) );
|
ent = sys::spawn( "script_origin", ( 0, 0, 0 ) );
|
||||||
level.sndroundwait = 1;
|
level.sndroundwait = 1;
|
||||||
ent thread sndghostroundmus_end();
|
ent thread sndghostroundmus_end();
|
||||||
ent endon( "sndGhostRoundEnd" );
|
ent endon( "sndGhostRoundEnd" );
|
||||||
@ -2046,7 +2046,7 @@ sndghostroundready()
|
|||||||
if ( level.zombie_ghost_round_states.next_ghost_round_number == level.round_number )
|
if ( level.zombie_ghost_round_states.next_ghost_round_number == level.round_number )
|
||||||
{
|
{
|
||||||
playsoundatposition( "zmb_ghost_round_srt", mansion );
|
playsoundatposition( "zmb_ghost_round_srt", mansion );
|
||||||
ent = spawn( "script_origin", mansion );
|
ent = sys::spawn( "script_origin", mansion );
|
||||||
ent playloopsound( "zmb_ghost_round_lp", 3 );
|
ent playloopsound( "zmb_ghost_round_lp", 3 );
|
||||||
ent thread sndghostroundready_stoplp();
|
ent thread sndghostroundready_stoplp();
|
||||||
break;
|
break;
|
||||||
@ -2070,7 +2070,7 @@ check_sending_away_zombie_followers()
|
|||||||
if ( flag_exists( "time_bomb_restore_active" ) && flag( "time_bomb_restore_active" ) )
|
if ( flag_exists( "time_bomb_restore_active" ) && flag( "time_bomb_restore_active" ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
players = getplayers();
|
players = sys::getplayers();
|
||||||
valid_player_in_ghost_zone_count = 0;
|
valid_player_in_ghost_zone_count = 0;
|
||||||
valid_player_count = 0;
|
valid_player_count = 0;
|
||||||
|
|
||||||
@ -2115,14 +2115,14 @@ send_away_zombie_follower( player )
|
|||||||
dest = 0;
|
dest = 0;
|
||||||
awaydir = self.origin - player.origin;
|
awaydir = self.origin - player.origin;
|
||||||
awaydir = ( awaydir[0], awaydir[1], 0 );
|
awaydir = ( awaydir[0], awaydir[1], 0 );
|
||||||
awaydir = vectornormalize( awaydir );
|
awaydir = sys::vectornormalize( awaydir );
|
||||||
endpos = self.origin + vectorscale( awaydir, 600 );
|
endpos = self.origin + vectorscale( awaydir, 600 );
|
||||||
locs = array_randomize( level.enemy_dog_locations );
|
locs = array_randomize( level.enemy_dog_locations );
|
||||||
|
|
||||||
for ( i = 0; i < locs.size; i++ )
|
for ( i = 0; i < locs.size; i++ )
|
||||||
{
|
{
|
||||||
dist_zombie = distancesquared( locs[i].origin, endpos );
|
dist_zombie = sys::distancesquared( locs[i].origin, endpos );
|
||||||
dist_player = distancesquared( locs[i].origin, player.origin );
|
dist_player = sys::distancesquared( locs[i].origin, player.origin );
|
||||||
|
|
||||||
if ( dist_zombie < dist_player )
|
if ( dist_zombie < dist_player )
|
||||||
{
|
{
|
||||||
@ -2135,7 +2135,7 @@ send_away_zombie_follower( player )
|
|||||||
self notify( "zombie_acquire_enemy" );
|
self notify( "zombie_acquire_enemy" );
|
||||||
|
|
||||||
if ( isdefined( locs[dest] ) )
|
if ( isdefined( locs[dest] ) )
|
||||||
self setgoalpos( locs[dest].origin );
|
self sys::setgoalpos( locs[dest].origin );
|
||||||
|
|
||||||
wait 5;
|
wait 5;
|
||||||
self thread maps\mp\zombies\_zm_ai_basic::find_flesh();
|
self thread maps\mp\zombies\_zm_ai_basic::find_flesh();
|
||||||
@ -2233,7 +2233,7 @@ player_moving_speed_scale_think()
|
|||||||
|
|
||||||
while ( true )
|
while ( true )
|
||||||
{
|
{
|
||||||
players = get_players();
|
players = sys::getplayers();
|
||||||
|
|
||||||
foreach ( player in players )
|
foreach ( player in players )
|
||||||
{
|
{
|
||||||
@ -2409,7 +2409,7 @@ get_next_spot_during_ghost_round_presentation()
|
|||||||
spawn_ghost_round_presentation_ghost()
|
spawn_ghost_round_presentation_ghost()
|
||||||
{
|
{
|
||||||
spawn_point = get_next_spot_during_ghost_round_presentation();
|
spawn_point = get_next_spot_during_ghost_round_presentation();
|
||||||
ghost = spawn( "script_model", spawn_point.origin );
|
ghost = sys::spawn( "script_model", spawn_point.origin );
|
||||||
ghost.angles = spawn_point.angles;
|
ghost.angles = spawn_point.angles;
|
||||||
ghost setmodel( "c_zom_zombie_buried_ghost_woman_fb" );
|
ghost setmodel( "c_zom_zombie_buried_ghost_woman_fb" );
|
||||||
|
|
||||||
@ -2430,9 +2430,9 @@ spawn_ghost_round_presentation_ghost()
|
|||||||
wait 0.5;
|
wait 0.5;
|
||||||
ghost useanimtree( #animtree );
|
ghost useanimtree( #animtree );
|
||||||
ghost setanim( %ai_zombie_ghost_idle );
|
ghost setanim( %ai_zombie_ghost_idle );
|
||||||
ghost.script_mover = spawn( "script_origin", ghost.origin );
|
ghost.script_mover = sys::spawn( "script_origin", ghost.origin );
|
||||||
ghost.script_mover.angles = ghost.angles;
|
ghost.script_mover.angles = ghost.angles;
|
||||||
ghost linkto( ghost.script_mover );
|
ghost sys::linkto( ghost.script_mover );
|
||||||
ghost setclientfield( "sndGhostAudio", 1 );
|
ghost setclientfield( "sndGhostAudio", 1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2444,7 +2444,7 @@ ghost_round_presentation_think()
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
if ( !isdefined( level.sndmansionent ) )
|
if ( !isdefined( level.sndmansionent ) )
|
||||||
level.sndmansionent = spawn( "script_origin", ( 2830, 555, 436 ) );
|
level.sndmansionent = sys::spawn( "script_origin", ( 2830, 555, 436 ) );
|
||||||
|
|
||||||
flag_wait( "start_zombie_round_logic" );
|
flag_wait( "start_zombie_round_logic" );
|
||||||
|
|
||||||
@ -2492,14 +2492,14 @@ ghost_switch_windows()
|
|||||||
next_spot = get_next_spot_during_ghost_round_presentation();
|
next_spot = get_next_spot_during_ghost_round_presentation();
|
||||||
self setclientfield( "ghost_fx", 5 );
|
self setclientfield( "ghost_fx", 5 );
|
||||||
self setclientfield( "sndGhostAudio", 0 );
|
self setclientfield( "sndGhostAudio", 0 );
|
||||||
self ghost();
|
self sys::ghost();
|
||||||
self.script_mover moveto( next_spot.origin, 1 );
|
self.script_mover moveto( next_spot.origin, 1 );
|
||||||
self.script_mover waittill( "movedone" );
|
self.script_mover waittill( "movedone" );
|
||||||
self.script_mover.origin = next_spot.origin;
|
self.script_mover.origin = next_spot.origin;
|
||||||
self.script_mover.angles = next_spot.angles;
|
self.script_mover.angles = next_spot.angles;
|
||||||
self setclientfield( "ghost_fx", 3 );
|
self setclientfield( "ghost_fx", 3 );
|
||||||
self setclientfield( "sndGhostAudio", 1 );
|
self setclientfield( "sndGhostAudio", 1 );
|
||||||
self show();
|
self sys::show();
|
||||||
wait 6;
|
wait 6;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2511,7 +2511,7 @@ ghost_round_presentation_sound()
|
|||||||
|
|
||||||
while ( true )
|
while ( true )
|
||||||
{
|
{
|
||||||
players = getplayers();
|
players = sys::getplayers();
|
||||||
|
|
||||||
foreach ( player in players )
|
foreach ( player in players )
|
||||||
{
|
{
|
||||||
@ -2605,7 +2605,7 @@ init_time_bomb_ghost_rounds()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
is_ghost()
|
is_sys::ghost()
|
||||||
{
|
{
|
||||||
return !( isdefined( self.is_ghost ) && self.is_ghost );
|
return !( isdefined( self.is_ghost ) && self.is_ghost );
|
||||||
}
|
}
|
||||||
@ -2685,7 +2685,7 @@ time_bomb_custom_get_enemy_func()
|
|||||||
|
|
||||||
time_bomb_global_data_save_ghosts()
|
time_bomb_global_data_save_ghosts()
|
||||||
{
|
{
|
||||||
s_temp = spawnstruct();
|
s_temp = sys::spawnstruct();
|
||||||
s_temp.ghost_count = level.zombie_ghost_count;
|
s_temp.ghost_count = level.zombie_ghost_count;
|
||||||
s_temp.round_started = level.zombie_ghost_round_states.is_started;
|
s_temp.round_started = level.zombie_ghost_round_states.is_started;
|
||||||
s_temp.round_first_done = level.zombie_ghost_round_states.is_first_ghost_round_finished;
|
s_temp.round_first_done = level.zombie_ghost_round_states.is_first_ghost_round_finished;
|
||||||
@ -2702,7 +2702,7 @@ time_bomb_global_data_restore_ghosts()
|
|||||||
level.zombie_ghost_round_states.next_ghost_round_number = self.ghost_data.round_next;
|
level.zombie_ghost_round_states.next_ghost_round_number = self.ghost_data.round_next;
|
||||||
level.zombie_ghost_round_states.round_zombie_total = self.ghost_data.zombie_total;
|
level.zombie_ghost_round_states.round_zombie_total = self.ghost_data.zombie_total;
|
||||||
|
|
||||||
foreach ( player in get_players() )
|
foreach ( player in sys::getplayers() )
|
||||||
player.ghost_count = 0;
|
player.ghost_count = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2779,7 +2779,7 @@ _restore_ghost_data( save_struct, n_index )
|
|||||||
self.favoriteenemy = s_data.favoriteenemy;
|
self.favoriteenemy = s_data.favoriteenemy;
|
||||||
|
|
||||||
self.ignore_timebomb_slowdown = 1;
|
self.ignore_timebomb_slowdown = 1;
|
||||||
self setgoalpos( self.origin );
|
self sys::setgoalpos( self.origin );
|
||||||
}
|
}
|
||||||
|
|
||||||
_respawn_ghost_failsafe()
|
_respawn_ghost_failsafe()
|
||||||
@ -2812,7 +2812,7 @@ devgui_warp_to_mansion()
|
|||||||
#/
|
#/
|
||||||
}
|
}
|
||||||
|
|
||||||
devgui_toggle_no_ghost()
|
devgui_toggle_no_sys::ghost()
|
||||||
{
|
{
|
||||||
/#
|
/#
|
||||||
level.force_no_ghost = !level.force_no_ghost;
|
level.force_no_ghost = !level.force_no_ghost;
|
||||||
|
@ -45,7 +45,7 @@ is_player_in_ghost_zone( player )
|
|||||||
result = 0;
|
result = 0;
|
||||||
|
|
||||||
if ( !isdefined( level.ghost_zone_overrides ) )
|
if ( !isdefined( level.ghost_zone_overrides ) )
|
||||||
level.ghost_zone_overrides = getentarray( "ghost_round_override", "script_noteworthy" );
|
level.ghost_zone_overrides = sys::getentarray( "ghost_round_override", "script_noteworthy" );
|
||||||
|
|
||||||
is_player_in_override_trigger = 0;
|
is_player_in_override_trigger = 0;
|
||||||
|
|
||||||
@ -53,7 +53,7 @@ is_player_in_ghost_zone( player )
|
|||||||
{
|
{
|
||||||
foreach ( trigger in level.ghost_zone_overrides )
|
foreach ( trigger in level.ghost_zone_overrides )
|
||||||
{
|
{
|
||||||
if ( player istouching( trigger ) )
|
if ( player sys::istouching( trigger ) )
|
||||||
{
|
{
|
||||||
is_player_in_override_trigger = 1;
|
is_player_in_override_trigger = 1;
|
||||||
break;
|
break;
|
||||||
@ -72,44 +72,44 @@ is_player_in_ghost_zone( player )
|
|||||||
ghost_bad_path_init()
|
ghost_bad_path_init()
|
||||||
{
|
{
|
||||||
level.bad_zones = [];
|
level.bad_zones = [];
|
||||||
level.bad_zones[0] = spawnstruct();
|
level.bad_zones[0] = sys::spawnstruct();
|
||||||
level.bad_zones[0].name = "zone_underground_courthouse";
|
level.bad_zones[0].name = "zone_underground_courthouse";
|
||||||
level.bad_zones[0].adjacent = [];
|
level.bad_zones[0].adjacent = [];
|
||||||
level.bad_zones[0].adjacent[0] = "zone_underground_courthouse2";
|
level.bad_zones[0].adjacent[0] = "zone_underground_courthouse2";
|
||||||
level.bad_zones[0].adjacent[1] = "zone_tunnels_north2";
|
level.bad_zones[0].adjacent[1] = "zone_tunnels_north2";
|
||||||
level.bad_zones[0].ignore_func = getFunction( "maps/mp/zm_buried", "is_courthouse_open" );
|
level.bad_zones[0].ignore_func = pluto_sys::getfunction( "maps/mp/zm_buried", "is_courthouse_open" );
|
||||||
level.bad_zones[1] = spawnstruct();
|
level.bad_zones[1] = sys::spawnstruct();
|
||||||
level.bad_zones[1].name = "zone_underground_courthouse2";
|
level.bad_zones[1].name = "zone_underground_courthouse2";
|
||||||
level.bad_zones[1].adjacent = [];
|
level.bad_zones[1].adjacent = [];
|
||||||
level.bad_zones[1].adjacent[0] = "zone_underground_courthouse";
|
level.bad_zones[1].adjacent[0] = "zone_underground_courthouse";
|
||||||
level.bad_zones[1].adjacent[1] = "zone_tunnels_north2";
|
level.bad_zones[1].adjacent[1] = "zone_tunnels_north2";
|
||||||
level.bad_zones[1].ignore_func = getFunction( "maps/mp/zm_buried", "is_courthouse_open" );
|
level.bad_zones[1].ignore_func = pluto_sys::getfunction( "maps/mp/zm_buried", "is_courthouse_open" );
|
||||||
level.bad_zones[2] = spawnstruct();
|
level.bad_zones[2] = sys::spawnstruct();
|
||||||
level.bad_zones[2].name = "zone_tunnels_north2";
|
level.bad_zones[2].name = "zone_tunnels_north2";
|
||||||
level.bad_zones[2].adjacent = [];
|
level.bad_zones[2].adjacent = [];
|
||||||
level.bad_zones[2].adjacent[0] = "zone_underground_courthouse2";
|
level.bad_zones[2].adjacent[0] = "zone_underground_courthouse2";
|
||||||
level.bad_zones[2].adjacent[1] = "zone_underground_courthouse";
|
level.bad_zones[2].adjacent[1] = "zone_underground_courthouse";
|
||||||
level.bad_zones[2].flag = "tunnels2courthouse";
|
level.bad_zones[2].flag = "tunnels2courthouse";
|
||||||
level.bad_zones[2].flag_adjacent = "zone_tunnels_north";
|
level.bad_zones[2].flag_adjacent = "zone_tunnels_north";
|
||||||
level.bad_zones[2].ignore_func = getFunction( "maps/mp/zm_buried", "is_courthouse_open" );
|
level.bad_zones[2].ignore_func = pluto_sys::getfunction( "maps/mp/zm_buried", "is_courthouse_open" );
|
||||||
level.bad_zones[3] = spawnstruct();
|
level.bad_zones[3] = sys::spawnstruct();
|
||||||
level.bad_zones[3].name = "zone_tunnels_north";
|
level.bad_zones[3].name = "zone_tunnels_north";
|
||||||
level.bad_zones[3].adjacent = [];
|
level.bad_zones[3].adjacent = [];
|
||||||
level.bad_zones[3].adjacent[0] = "zone_tunnels_center";
|
level.bad_zones[3].adjacent[0] = "zone_tunnels_center";
|
||||||
level.bad_zones[3].flag = "tunnels2courthouse";
|
level.bad_zones[3].flag = "tunnels2courthouse";
|
||||||
level.bad_zones[3].flag_adjacent = "zone_tunnels_north2";
|
level.bad_zones[3].flag_adjacent = "zone_tunnels_north2";
|
||||||
level.bad_zones[3].ignore_func = getFunction( "maps/mp/zm_buried", "is_tunnel_open" );
|
level.bad_zones[3].ignore_func = pluto_sys::getfunction( "maps/mp/zm_buried", "is_tunnel_open" );
|
||||||
level.bad_zones[4] = spawnstruct();
|
level.bad_zones[4] = sys::spawnstruct();
|
||||||
level.bad_zones[4].name = "zone_tunnels_center";
|
level.bad_zones[4].name = "zone_tunnels_center";
|
||||||
level.bad_zones[4].adjacent = [];
|
level.bad_zones[4].adjacent = [];
|
||||||
level.bad_zones[4].adjacent[0] = "zone_tunnels_north";
|
level.bad_zones[4].adjacent[0] = "zone_tunnels_north";
|
||||||
level.bad_zones[4].adjacent[1] = "zone_tunnels_south";
|
level.bad_zones[4].adjacent[1] = "zone_tunnels_south";
|
||||||
level.bad_zones[4].ignore_func = getFunction( "maps/mp/zm_buried", "is_tunnel_open" );
|
level.bad_zones[4].ignore_func = pluto_sys::getfunction( "maps/mp/zm_buried", "is_tunnel_open" );
|
||||||
level.bad_zones[5] = spawnstruct();
|
level.bad_zones[5] = sys::spawnstruct();
|
||||||
level.bad_zones[5].name = "zone_tunnels_south";
|
level.bad_zones[5].name = "zone_tunnels_south";
|
||||||
level.bad_zones[5].adjacent = [];
|
level.bad_zones[5].adjacent = [];
|
||||||
level.bad_zones[5].adjacent[0] = "zone_tunnels_center";
|
level.bad_zones[5].adjacent[0] = "zone_tunnels_center";
|
||||||
level.bad_zones[5].ignore_func = getFunction( "maps/mp/zm_buried", "is_tunnel_open" );
|
level.bad_zones[5].ignore_func = pluto_sys::getfunction( "maps/mp/zm_buried", "is_tunnel_open" );
|
||||||
}
|
}
|
||||||
|
|
||||||
ghost_bad_path_failsafe()
|
ghost_bad_path_failsafe()
|
||||||
@ -219,7 +219,7 @@ disable_traversal_clip_around_mansion()
|
|||||||
if ( isdefined( level.ghost_zone_door_clips ) && level.ghost_zone_door_clips.size > 0 )
|
if ( isdefined( level.ghost_zone_door_clips ) && level.ghost_zone_door_clips.size > 0 )
|
||||||
{
|
{
|
||||||
foreach ( door_clip in level.ghost_zone_door_clips )
|
foreach ( door_clip in level.ghost_zone_door_clips )
|
||||||
door_clip notsolid();
|
door_clip sys::notsolid();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -27,11 +27,11 @@ precache()
|
|||||||
|
|
||||||
precache_fx()
|
precache_fx()
|
||||||
{
|
{
|
||||||
level._effect["leaper_death"] = loadfx( "maps/zombie/fx_zmb_leaper_death" );
|
level._effect["leaper_death"] = sys::loadfx( "maps/zombie/fx_zmb_leaper_death" );
|
||||||
level._effect["leaper_spawn"] = loadfx( "maps/zombie/fx_zmb_leaper_spawn" );
|
level._effect["leaper_spawn"] = sys::loadfx( "maps/zombie/fx_zmb_leaper_spawn" );
|
||||||
level._effect["leaper_trail"] = loadfx( "maps/zombie/fx_zmb_leaper_trail" );
|
level._effect["leaper_trail"] = sys::loadfx( "maps/zombie/fx_zmb_leaper_trail" );
|
||||||
level._effect["leaper_walk"] = loadfx( "maps/zombie/fx_zmb_leaper_walk" );
|
level._effect["leaper_walk"] = sys::loadfx( "maps/zombie/fx_zmb_leaper_walk" );
|
||||||
level._effect["leaper_wall_impact"] = loadfx( "maps/zombie/fx_zmb_leaper_wall_impact" );
|
level._effect["leaper_wall_impact"] = sys::loadfx( "maps/zombie/fx_zmb_leaper_wall_impact" );
|
||||||
}
|
}
|
||||||
|
|
||||||
init()
|
init()
|
||||||
@ -42,7 +42,7 @@ init()
|
|||||||
if ( !isdefined( level.leapers_per_player ) )
|
if ( !isdefined( level.leapers_per_player ) )
|
||||||
level.leapers_per_player = 2;
|
level.leapers_per_player = 2;
|
||||||
|
|
||||||
level.no_jump_triggers = getentarray( "leaper_no_jump_trigger", "targetname" );
|
level.no_jump_triggers = sys::getentarray( "leaper_no_jump_trigger", "targetname" );
|
||||||
}
|
}
|
||||||
|
|
||||||
leaper_calc_anim_offsets()
|
leaper_calc_anim_offsets()
|
||||||
@ -51,7 +51,7 @@ leaper_calc_anim_offsets()
|
|||||||
|
|
||||||
if ( isdefined( leaper ) )
|
if ( isdefined( leaper ) )
|
||||||
{
|
{
|
||||||
level.leaper_anim = spawnstruct();
|
level.leaper_anim = sys::spawnstruct();
|
||||||
asd = "zm_wall_up";
|
asd = "zm_wall_up";
|
||||||
anim_id = leaper getanimfromasd( asd, 0 );
|
anim_id = leaper getanimfromasd( asd, 0 );
|
||||||
level.leaper_anim.up_mid = getmovedelta( anim_id, 0, 0.488 ) + vectorscale( ( 0, 0, 1 ), 6.0 );
|
level.leaper_anim.up_mid = getmovedelta( anim_id, 0, 0.488 ) + vectorscale( ( 0, 0, 1 ), 6.0 );
|
||||||
@ -82,7 +82,7 @@ leaper_calc_anim_offsets()
|
|||||||
|
|
||||||
leaper_spawner_init()
|
leaper_spawner_init()
|
||||||
{
|
{
|
||||||
level.leaper_spawners = getentarray( "leaper_zombie_spawner", "script_noteworthy" );
|
level.leaper_spawners = sys::getentarray( "leaper_zombie_spawner", "script_noteworthy" );
|
||||||
|
|
||||||
if ( level.leaper_spawners.size == 0 )
|
if ( level.leaper_spawners.size == 0 )
|
||||||
return;
|
return;
|
||||||
@ -167,11 +167,11 @@ leaper_init()
|
|||||||
self notify( "zombie_init_done" );
|
self notify( "zombie_init_done" );
|
||||||
self.allowpain = 0;
|
self.allowpain = 0;
|
||||||
self thread play_ambient_leaper_vocals();
|
self thread play_ambient_leaper_vocals();
|
||||||
self animmode( "normal" );
|
self sys::animmode( "normal" );
|
||||||
self orientmode( "face enemy" );
|
self sys::orientmode( "face enemy" );
|
||||||
self maps\mp\zombies\_zm_spawner::zombie_setup_attack_properties();
|
self maps\mp\zombies\_zm_spawner::zombie_setup_attack_properties();
|
||||||
self maps\mp\zombies\_zm_spawner::zombie_complete_emerging_into_playable_area();
|
self maps\mp\zombies\_zm_spawner::zombie_complete_emerging_into_playable_area();
|
||||||
self setfreecameralockonallowed( 0 );
|
self sys::setfreecameralockonallowed( 0 );
|
||||||
|
|
||||||
if ( isdefined( self.spawn_point.script_parameters ) && ( self.spawn_point.script_parameters == "emerge_bottom" || self.spawn_point.script_parameters == "emerge_top" ) )
|
if ( isdefined( self.spawn_point.script_parameters ) && ( self.spawn_point.script_parameters == "emerge_bottom" || self.spawn_point.script_parameters == "emerge_top" ) )
|
||||||
self thread do_leaper_emerge( self.spawn_point );
|
self thread do_leaper_emerge( self.spawn_point );
|
||||||
@ -180,7 +180,7 @@ leaper_init()
|
|||||||
self thread leaper_check_zone();
|
self thread leaper_check_zone();
|
||||||
self thread leaper_check_no_jump();
|
self thread leaper_check_no_jump();
|
||||||
self thread leaper_watch_enemy();
|
self thread leaper_watch_enemy();
|
||||||
self.combat_animmode = ::leaper_combat_animmode;
|
self.combat_sys::animmode = ::leaper_combat_sys::animmode;
|
||||||
level thread maps\mp\zombies\_zm_spawner::zombie_death_event( self );
|
level thread maps\mp\zombies\_zm_spawner::zombie_death_event( self );
|
||||||
self thread maps\mp\zombies\_zm_spawner::enemy_death_detection();
|
self thread maps\mp\zombies\_zm_spawner::enemy_death_detection();
|
||||||
self thread leaper_elevator_failsafe();
|
self thread leaper_elevator_failsafe();
|
||||||
@ -262,7 +262,7 @@ leaper_can_use_anim( local_mid, local_end, dir )
|
|||||||
end = self localtoworldcoords( local_end );
|
end = self localtoworldcoords( local_end );
|
||||||
real_mid = mid;
|
real_mid = mid;
|
||||||
forward_dist = length( end - start ) * 0.5;
|
forward_dist = length( end - start ) * 0.5;
|
||||||
forward_vec = vectornormalize( end - start );
|
forward_vec = sys::vectornormalize( end - start );
|
||||||
temp_org = start + vectorscale( forward_vec, forward_dist );
|
temp_org = start + vectorscale( forward_vec, forward_dist );
|
||||||
forward_org = ( temp_org[0], temp_org[1], real_mid[2] );
|
forward_org = ( temp_org[0], temp_org[1], real_mid[2] );
|
||||||
end_top = end + vectorscale( ( 0, 0, 1 ), 24.0 );
|
end_top = end + vectorscale( ( 0, 0, 1 ), 24.0 );
|
||||||
@ -373,7 +373,7 @@ leaper_building_jump()
|
|||||||
|
|
||||||
if ( isdefined( self.spawn_point.script_string ) && self.spawn_point.script_string != "find_flesh" )
|
if ( isdefined( self.spawn_point.script_string ) && self.spawn_point.script_string != "find_flesh" )
|
||||||
{
|
{
|
||||||
self animscripted( self.spawn_point.origin, self.spawn_point.angles, "zm_building_leap", self.spawn_point.script_string );
|
self sys::animscripted( self.spawn_point.origin, self.spawn_point.angles, "zm_building_leap", self.spawn_point.script_string );
|
||||||
self maps\mp\animscripts\zm_shared::donotetracks( "building_leap_anim" );
|
self maps\mp\animscripts\zm_shared::donotetracks( "building_leap_anim" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -387,12 +387,12 @@ leaper_check_wall()
|
|||||||
self endon( "death" );
|
self endon( "death" );
|
||||||
|
|
||||||
if ( !isdefined( self.next_leap_time ) )
|
if ( !isdefined( self.next_leap_time ) )
|
||||||
self.next_leap_time = gettime() + 500;
|
self.next_leap_time = sys::gettime() + 500;
|
||||||
|
|
||||||
if ( is_true( self.sliding_on_goo ) || is_true( self.is_leaping ) )
|
if ( is_true( self.sliding_on_goo ) || is_true( self.is_leaping ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( gettime() > self.next_leap_time && !is_true( self.no_jump ) )
|
if ( sys::gettime() > self.next_leap_time && !is_true( self.no_jump ) )
|
||||||
{
|
{
|
||||||
wall_anim = [];
|
wall_anim = [];
|
||||||
|
|
||||||
@ -420,13 +420,13 @@ leaper_check_wall()
|
|||||||
self.is_leaping = 1;
|
self.is_leaping = 1;
|
||||||
self notify( "stop_find_flesh" );
|
self notify( "stop_find_flesh" );
|
||||||
self notify( "zombie_acquire_enemy" );
|
self notify( "zombie_acquire_enemy" );
|
||||||
self animcustom( ::leaper_play_anim );
|
self sys::animcustom( ::leaper_play_anim );
|
||||||
self waittill( "leap_anim_done" );
|
self waittill( "leap_anim_done" );
|
||||||
self leaper_stop_trail_fx();
|
self leaper_stop_trail_fx();
|
||||||
self.ignoreall = 0;
|
self.ignoreall = 0;
|
||||||
self.is_leaping = 0;
|
self.is_leaping = 0;
|
||||||
self thread maps\mp\zombies\_zm_ai_basic::find_flesh();
|
self thread maps\mp\zombies\_zm_ai_basic::find_flesh();
|
||||||
self.next_leap_time = gettime() + 500;
|
self.next_leap_time = sys::gettime() + 500;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -471,7 +471,7 @@ leaper_check_no_jump()
|
|||||||
|
|
||||||
foreach ( trigger in level.no_jump_triggers )
|
foreach ( trigger in level.no_jump_triggers )
|
||||||
{
|
{
|
||||||
if ( self istouching( trigger ) )
|
if ( self sys::istouching( trigger ) )
|
||||||
{
|
{
|
||||||
self.no_jump = 1;
|
self.no_jump = 1;
|
||||||
break;
|
break;
|
||||||
@ -484,17 +484,17 @@ leaper_check_no_jump()
|
|||||||
|
|
||||||
melee_anim_func()
|
melee_anim_func()
|
||||||
{
|
{
|
||||||
self.next_leap_time = gettime() + 1500;
|
self.next_leap_time = sys::gettime() + 1500;
|
||||||
self animmode( "gravity" );
|
self sys::animmode( "gravity" );
|
||||||
}
|
}
|
||||||
|
|
||||||
leaper_start_trail_fx()
|
leaper_start_trail_fx()
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon( "death" );
|
||||||
self leaper_stop_trail_fx();
|
self leaper_stop_trail_fx();
|
||||||
self.trail_fx = spawn( "script_model", self.origin );
|
self.trail_fx = sys::spawn( "script_model", self.origin );
|
||||||
self.trail_fx setmodel( "tag_origin" );
|
self.trail_fx setmodel( "tag_origin" );
|
||||||
self.trail_fx linkto( self );
|
self.trail_fx sys::linkto( self );
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
playfxontag( level._effect["leaper_trail"], self.trail_fx, "tag_origin" );
|
playfxontag( level._effect["leaper_trail"], self.trail_fx, "tag_origin" );
|
||||||
}
|
}
|
||||||
@ -508,11 +508,11 @@ leaper_stop_trail_fx()
|
|||||||
leaper_play_anim()
|
leaper_play_anim()
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon( "death" );
|
||||||
self animmode( "nogravity" );
|
self sys::animmode( "nogravity" );
|
||||||
self setanimstatefromasd( self.leap_anim );
|
self sys::setanimstatefromasd( self.leap_anim );
|
||||||
self thread leaper_handle_fx_notetracks( "wall_anim" );
|
self thread leaper_handle_fx_notetracks( "wall_anim" );
|
||||||
maps\mp\animscripts\zm_shared::donotetracks( "wall_anim" );
|
maps\mp\animscripts\zm_shared::donotetracks( "wall_anim" );
|
||||||
self animmode( "normal" );
|
self sys::animmode( "normal" );
|
||||||
self notify( "leap_anim_done" );
|
self notify( "leap_anim_done" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -533,7 +533,7 @@ leaper_notetracks( animname )
|
|||||||
self endon( "death" );
|
self endon( "death" );
|
||||||
self endon( "leap_anim_done" );
|
self endon( "leap_anim_done" );
|
||||||
self waittillmatch( animname, "gravity on" );
|
self waittillmatch( animname, "gravity on" );
|
||||||
self animmode( "normal" );
|
self sys::animmode( "normal" );
|
||||||
}
|
}
|
||||||
|
|
||||||
enable_leaper_rounds()
|
enable_leaper_rounds()
|
||||||
@ -579,7 +579,7 @@ leaper_round_spawning()
|
|||||||
{
|
{
|
||||||
level endon( "intermission" );
|
level endon( "intermission" );
|
||||||
level endon( "leaper_round_ending" );
|
level endon( "leaper_round_ending" );
|
||||||
level.leaper_targets = getplayers();
|
level.leaper_targets = sys::getplayers();
|
||||||
|
|
||||||
for ( i = 0; i < level.leaper_targets.size; i++ )
|
for ( i = 0; i < level.leaper_targets.size; i++ )
|
||||||
level.leaper_targets[i].hunted_by = 0;
|
level.leaper_targets[i].hunted_by = 0;
|
||||||
@ -597,7 +597,7 @@ leaper_round_spawning()
|
|||||||
level.leaper_intermission = 1;
|
level.leaper_intermission = 1;
|
||||||
level thread leaper_round_accuracy_tracking();
|
level thread leaper_round_accuracy_tracking();
|
||||||
level thread leaper_round_aftermath();
|
level thread leaper_round_aftermath();
|
||||||
players = get_players();
|
players = sys::getplayers();
|
||||||
wait 1;
|
wait 1;
|
||||||
playsoundatposition( "vox_zmba_event_dogstart_0", ( 0, 0, 0 ) );
|
playsoundatposition( "vox_zmba_event_dogstart_0", ( 0, 0, 0 ) );
|
||||||
wait 1;
|
wait 1;
|
||||||
@ -648,7 +648,7 @@ leaper_round_spawning()
|
|||||||
num_player_valid = get_number_of_valid_players();
|
num_player_valid = get_number_of_valid_players();
|
||||||
}
|
}
|
||||||
|
|
||||||
players = get_players();
|
players = sys::getplayers();
|
||||||
favorite_enemy = get_favorite_enemy();
|
favorite_enemy = get_favorite_enemy();
|
||||||
spawn_point = leaper_spawn_logic( level.enemy_dog_spawns, favorite_enemy );
|
spawn_point = leaper_spawn_logic( level.enemy_dog_spawns, favorite_enemy );
|
||||||
ai = spawn_zombie( level.leaper_spawners[0] );
|
ai = spawn_zombie( level.leaper_spawners[0] );
|
||||||
@ -668,7 +668,7 @@ leaper_round_spawning()
|
|||||||
|
|
||||||
leaper_round_accuracy_tracking()
|
leaper_round_accuracy_tracking()
|
||||||
{
|
{
|
||||||
players = getplayers();
|
players = sys::getplayers();
|
||||||
level.leaper_round_accurate_players = 0;
|
level.leaper_round_accurate_players = 0;
|
||||||
|
|
||||||
for ( i = 0; i < players.size; i++ )
|
for ( i = 0; i < players.size; i++ )
|
||||||
@ -678,7 +678,7 @@ leaper_round_accuracy_tracking()
|
|||||||
}
|
}
|
||||||
|
|
||||||
level waittill( "last_leaper_down" );
|
level waittill( "last_leaper_down" );
|
||||||
players = getplayers();
|
players = sys::getplayers();
|
||||||
|
|
||||||
for ( i = 0; i < players.size; i++ )
|
for ( i = 0; i < players.size; i++ )
|
||||||
{
|
{
|
||||||
@ -723,7 +723,7 @@ leaper_round_wait()
|
|||||||
|
|
||||||
leaper_health_increase()
|
leaper_health_increase()
|
||||||
{
|
{
|
||||||
players = getplayers();
|
players = sys::getplayers();
|
||||||
|
|
||||||
if ( level.leaper_round_count == 1 )
|
if ( level.leaper_round_count == 1 )
|
||||||
level.leaper_health = 400;
|
level.leaper_health = 400;
|
||||||
@ -740,7 +740,7 @@ leaper_health_increase()
|
|||||||
|
|
||||||
get_favorite_enemy()
|
get_favorite_enemy()
|
||||||
{
|
{
|
||||||
leaper_targets = getplayers();
|
leaper_targets = sys::getplayers();
|
||||||
least_hunted = leaper_targets[0];
|
least_hunted = leaper_targets[0];
|
||||||
|
|
||||||
for ( i = 0; i < leaper_targets.size; i++ )
|
for ( i = 0; i < leaper_targets.size; i++ )
|
||||||
@ -775,9 +775,9 @@ leaper_watch_enemy()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
leaper_combat_animmode()
|
leaper_combat_sys::animmode()
|
||||||
{
|
{
|
||||||
self animmode( "gravity", 0 );
|
self sys::animmode( "gravity", 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
leaper_spawn_logic_old( leaper_array, favorite_enemy )
|
leaper_spawn_logic_old( leaper_array, favorite_enemy )
|
||||||
@ -793,7 +793,7 @@ leaper_spawn_logic_old( leaper_array, favorite_enemy )
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
dist_squared = distancesquared( leaper_locs[i].origin, favorite_enemy.origin );
|
dist_squared = sys::distancesquared( leaper_locs[i].origin, favorite_enemy.origin );
|
||||||
|
|
||||||
if ( dist_squared > 160000 && dist_squared < 1000000 )
|
if ( dist_squared > 160000 && dist_squared < 1000000 )
|
||||||
{
|
{
|
||||||
@ -849,14 +849,14 @@ leaper_spawn_logic( leaper_array, favorite_enemy )
|
|||||||
/#
|
/#
|
||||||
if ( getdvarint( #"scr_zombie_spawn_in_view" ) )
|
if ( getdvarint( #"scr_zombie_spawn_in_view" ) )
|
||||||
{
|
{
|
||||||
player = get_players()[0];
|
player = sys::getplayers()[0];
|
||||||
a_spawn_points_in_view = [];
|
a_spawn_points_in_view = [];
|
||||||
|
|
||||||
for ( i = 0; i < a_leaper_spawn_points.size; i++ )
|
for ( i = 0; i < a_leaper_spawn_points.size; i++ )
|
||||||
{
|
{
|
||||||
player_vec = vectornormalize( anglestoforward( player.angles ) );
|
player_vec = sys::vectornormalize( anglestoforward( player.angles ) );
|
||||||
player_spawn = vectornormalize( a_leaper_spawn_points[i].origin - player.origin );
|
player_spawn = sys::vectornormalize( a_leaper_spawn_points[i].origin - player.origin );
|
||||||
dot = vectordot( player_vec, player_spawn );
|
dot = sys::vectordot( player_vec, player_spawn );
|
||||||
|
|
||||||
if ( dot > 0.707 )
|
if ( dot > 0.707 )
|
||||||
{
|
{
|
||||||
@ -931,15 +931,15 @@ get_valid_spawner_array( a_spawn_points )
|
|||||||
|
|
||||||
leaper_spawn_fx( ai, ent )
|
leaper_spawn_fx( ai, ent )
|
||||||
{
|
{
|
||||||
ai setfreecameralockonallowed( 0 );
|
ai sys::setfreecameralockonallowed( 0 );
|
||||||
ai show();
|
ai sys::show();
|
||||||
ai setfreecameralockonallowed( 1 );
|
ai sys::setfreecameralockonallowed( 1 );
|
||||||
v_fx_origin = ai.spawn_point.origin;
|
v_fx_origin = ai.spawn_point.origin;
|
||||||
|
|
||||||
if ( isdefined( ai.spawn_point.script_string ) && ai.spawn_point.script_string != "find_flesh" )
|
if ( isdefined( ai.spawn_point.script_string ) && ai.spawn_point.script_string != "find_flesh" )
|
||||||
{
|
{
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
v_fx_origin = ai gettagorigin( "J_SpineLower" );
|
v_fx_origin = ai sys::gettagorigin( "J_SpineLower" );
|
||||||
}
|
}
|
||||||
|
|
||||||
playfx( level._effect["leaper_spawn"], v_fx_origin );
|
playfx( level._effect["leaper_spawn"], v_fx_origin );
|
||||||
@ -1011,7 +1011,7 @@ leaper_traverse_watcher()
|
|||||||
{
|
{
|
||||||
self.elevator_parent = undefined;
|
self.elevator_parent = undefined;
|
||||||
|
|
||||||
object_is_on_elevator_func = getFunction( "maps\mp\zm_highrise_elevators", "object_is_on_elevator" );
|
object_is_on_elevator_func = pluto_sys::getfunction( "maps\mp\zm_highrise_elevators", "object_is_on_elevator" );
|
||||||
if ( isDefined( object_is_on_elevator_func ) && is_true( self [[ object_is_on_elevator_func ]]() ) )
|
if ( isDefined( object_is_on_elevator_func ) && is_true( self [[ object_is_on_elevator_func ]]() ) )
|
||||||
{
|
{
|
||||||
if ( isdefined( self.elevator_parent ) )
|
if ( isdefined( self.elevator_parent ) )
|
||||||
@ -1034,8 +1034,8 @@ leaper_traverse_watcher()
|
|||||||
leaper_playable_area_failsafe()
|
leaper_playable_area_failsafe()
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon( "death" );
|
||||||
self.leaper_failsafe_start_time = gettime();
|
self.leaper_failsafe_start_time = sys::gettime();
|
||||||
playable_area = getentarray( "player_volume", "script_noteworthy" );
|
playable_area = sys::getentarray( "player_volume", "script_noteworthy" );
|
||||||
b_outside_playable_space_this_frame = 0;
|
b_outside_playable_space_this_frame = 0;
|
||||||
self.leaper_outside_playable_space_time = -2;
|
self.leaper_outside_playable_space_time = -2;
|
||||||
|
|
||||||
@ -1043,7 +1043,7 @@ leaper_playable_area_failsafe()
|
|||||||
{
|
{
|
||||||
b_outside_playable_last_check = b_outside_playable_space_this_frame;
|
b_outside_playable_last_check = b_outside_playable_space_this_frame;
|
||||||
b_outside_playable_space_this_frame = is_leaper_outside_playable_space( playable_area );
|
b_outside_playable_space_this_frame = is_leaper_outside_playable_space( playable_area );
|
||||||
n_current_time = gettime();
|
n_current_time = sys::gettime();
|
||||||
|
|
||||||
if ( b_outside_playable_space_this_frame && !b_outside_playable_last_check )
|
if ( b_outside_playable_space_this_frame && !b_outside_playable_last_check )
|
||||||
self.leaper_outside_playable_space_time = n_current_time;
|
self.leaper_outside_playable_space_time = n_current_time;
|
||||||
@ -1081,7 +1081,7 @@ is_leaper_outside_playable_space( playable_area )
|
|||||||
|
|
||||||
foreach ( area in playable_area )
|
foreach ( area in playable_area )
|
||||||
{
|
{
|
||||||
if ( self istouching( area ) )
|
if ( self sys::istouching( area ) )
|
||||||
b_outside_play_space = 0;
|
b_outside_play_space = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1112,7 +1112,7 @@ leaper_spawn_failsafe()
|
|||||||
dist_sq = dist_sq + 576;
|
dist_sq = dist_sq + 576;
|
||||||
|
|
||||||
wait 1;
|
wait 1;
|
||||||
dist_sq = dist_sq + distancesquared( self.origin, prevorigin );
|
dist_sq = dist_sq + sys::distancesquared( self.origin, prevorigin );
|
||||||
prevorigin = self.origin;
|
prevorigin = self.origin;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1153,7 +1153,7 @@ do_leaper_emerge( spot )
|
|||||||
spot.is_spawning = 1;
|
spot.is_spawning = 1;
|
||||||
anim_org = spot.origin;
|
anim_org = spot.origin;
|
||||||
anim_ang = spot.angles;
|
anim_ang = spot.angles;
|
||||||
self ghost();
|
self sys::ghost();
|
||||||
self thread maps\mp\zombies\_zm_spawner::hide_pop();
|
self thread maps\mp\zombies\_zm_spawner::hide_pop();
|
||||||
self thread leaper_death_wait( "spawn_anim" );
|
self thread leaper_death_wait( "spawn_anim" );
|
||||||
|
|
||||||
@ -1185,9 +1185,9 @@ leaper_emerge()
|
|||||||
self endon( "death" );
|
self endon( "death" );
|
||||||
|
|
||||||
if ( self.spawn_point.script_parameters == "emerge_bottom" )
|
if ( self.spawn_point.script_parameters == "emerge_bottom" )
|
||||||
self animscripted( self.spawn_point.origin, self.spawn_point.angles, "zm_spawn_elevator_from_floor" );
|
self sys::animscripted( self.spawn_point.origin, self.spawn_point.angles, "zm_spawn_elevator_from_floor" );
|
||||||
else
|
else
|
||||||
self animscripted( self.spawn_point.origin, self.spawn_point.angles, "zm_spawn_elevator_from_ceiling" );
|
self sys::animscripted( self.spawn_point.origin, self.spawn_point.angles, "zm_spawn_elevator_from_ceiling" );
|
||||||
|
|
||||||
self maps\mp\animscripts\zm_shared::donotetracks( "spawn_anim" );
|
self maps\mp\animscripts\zm_shared::donotetracks( "spawn_anim" );
|
||||||
self.deathfunction = maps\mp\zombies\_zm_spawner::zombie_death_animscript;
|
self.deathfunction = maps\mp\zombies\_zm_spawner::zombie_death_animscript;
|
||||||
@ -1197,7 +1197,7 @@ leaper_emerge()
|
|||||||
leaper_round_start_audio()
|
leaper_round_start_audio()
|
||||||
{
|
{
|
||||||
wait 2.5;
|
wait 2.5;
|
||||||
players = get_players();
|
players = sys::getplayers();
|
||||||
num = randomintrange( 0, players.size );
|
num = randomintrange( 0, players.size );
|
||||||
players[num] maps\mp\zombies\_zm_audio::create_and_play_dialog( "general", "leaper_round" );
|
players[num] maps\mp\zombies\_zm_audio::create_and_play_dialog( "general", "leaper_round" );
|
||||||
array_thread( players, ::wait_for_player_to_see_leaper );
|
array_thread( players, ::wait_for_player_to_see_leaper );
|
||||||
@ -1215,9 +1215,9 @@ wait_for_player_to_see_leaper()
|
|||||||
|
|
||||||
foreach ( leaper in leapers )
|
foreach ( leaper in leapers )
|
||||||
{
|
{
|
||||||
player_vec = vectornormalize( anglestoforward( self.angles ) );
|
player_vec = sys::vectornormalize( anglestoforward( self.angles ) );
|
||||||
player_leaper = vectornormalize( leaper.origin - self.origin );
|
player_leaper = sys::vectornormalize( leaper.origin - self.origin );
|
||||||
dot = vectordot( player_vec, player_leaper );
|
dot = sys::vectordot( player_vec, player_leaper );
|
||||||
|
|
||||||
if ( dot > 0.707 )
|
if ( dot > 0.707 )
|
||||||
{
|
{
|
||||||
|
@ -30,21 +30,21 @@ precache()
|
|||||||
precachemodel( "c_zom_mech_claw" );
|
precachemodel( "c_zom_mech_claw" );
|
||||||
precachemodel( "c_zom_mech_faceplate" );
|
precachemodel( "c_zom_mech_faceplate" );
|
||||||
precachemodel( "c_zom_mech_powersupply_cap" );
|
precachemodel( "c_zom_mech_powersupply_cap" );
|
||||||
level._effect["mech_dmg_sparks"] = loadfx( "maps/zombie_tomb/fx_tomb_mech_dmg_sparks" );
|
level._effect["mech_dmg_sparks"] = sys::loadfx( "maps/zombie_tomb/fx_tomb_mech_dmg_sparks" );
|
||||||
level._effect["mech_dmg_steam"] = loadfx( "maps/zombie_tomb/fx_tomb_mech_dmg_steam" );
|
level._effect["mech_dmg_steam"] = sys::loadfx( "maps/zombie_tomb/fx_tomb_mech_dmg_steam" );
|
||||||
level._effect["mech_booster"] = loadfx( "maps/zombie_tomb/fx_tomb_mech_jump_booster" );
|
level._effect["mech_booster"] = sys::loadfx( "maps/zombie_tomb/fx_tomb_mech_jump_booster" );
|
||||||
level._effect["mech_wpn_source"] = loadfx( "maps/zombie_tomb/fx_tomb_mech_wpn_source" );
|
level._effect["mech_wpn_source"] = sys::loadfx( "maps/zombie_tomb/fx_tomb_mech_wpn_source" );
|
||||||
level._effect["mech_wpn_flamethrower"] = loadfx( "maps/zombie_tomb/fx_tomb_mech_wpn_flamethrower" );
|
level._effect["mech_wpn_flamethrower"] = sys::loadfx( "maps/zombie_tomb/fx_tomb_mech_wpn_flamethrower" );
|
||||||
level._effect["mech_booster_landing"] = loadfx( "maps/zombie_tomb/fx_tomb_mech_jump_landing" );
|
level._effect["mech_booster_landing"] = sys::loadfx( "maps/zombie_tomb/fx_tomb_mech_jump_landing" );
|
||||||
level._effect["mech_faceplate_dmg"] = loadfx( "maps/zombie_tomb/fx_tomb_mech_dmg_armor_face" );
|
level._effect["mech_faceplate_dmg"] = sys::loadfx( "maps/zombie_tomb/fx_tomb_mech_dmg_armor_face" );
|
||||||
level._effect["mech_armor_dmg"] = loadfx( "maps/zombie_tomb/fx_tomb_mech_dmg_armor" );
|
level._effect["mech_armor_dmg"] = sys::loadfx( "maps/zombie_tomb/fx_tomb_mech_dmg_armor" );
|
||||||
level._effect["mech_exhaust"] = loadfx( "maps/zombie_tomb/fx_tomb_mech_exhaust_smoke" );
|
level._effect["mech_exhaust"] = sys::loadfx( "maps/zombie_tomb/fx_tomb_mech_exhaust_smoke" );
|
||||||
level._effect["mech_booster_feet"] = loadfx( "maps/zombie_tomb/fx_tomb_mech_jump_booster_sm" );
|
level._effect["mech_booster_feet"] = sys::loadfx( "maps/zombie_tomb/fx_tomb_mech_jump_booster_sm" );
|
||||||
level._effect["mech_headlamp"] = loadfx( "maps/zombie_tomb/fx_tomb_mech_head_light" );
|
level._effect["mech_headlamp"] = sys::loadfx( "maps/zombie_tomb/fx_tomb_mech_head_light" );
|
||||||
level._effect["mech_footstep_steam"] = loadfx( "maps/zombie_tomb/fx_tomb_mech_foot_step_steam" );
|
level._effect["mech_footstep_steam"] = sys::loadfx( "maps/zombie_tomb/fx_tomb_mech_foot_step_steam" );
|
||||||
setdvar( "zombie_double_wide_checks", 1 );
|
setdvar( "zombie_double_wide_checks", 1 );
|
||||||
precacherumble( "mechz_footsteps" );
|
precacherumble( "mechz_footsteps" );
|
||||||
precacheshellshock( "lava_small" );
|
sys::precacheshellshock( "lava_small" );
|
||||||
}
|
}
|
||||||
|
|
||||||
register_clientfields()
|
register_clientfields()
|
||||||
@ -74,12 +74,12 @@ register_burn_overlay()
|
|||||||
main()
|
main()
|
||||||
{
|
{
|
||||||
register_clientfields();
|
register_clientfields();
|
||||||
level._effect["mechz_death"] = loadfx( "maps/zombie_tomb/fx_tomb_mech_death" );
|
level._effect["mechz_death"] = sys::loadfx( "maps/zombie_tomb/fx_tomb_mech_death" );
|
||||||
level._effect["mechz_sparks"] = loadfx( "maps/zombie_tomb/fx_tomb_mech_dmg_sparks" );
|
level._effect["mechz_sparks"] = sys::loadfx( "maps/zombie_tomb/fx_tomb_mech_dmg_sparks" );
|
||||||
level._effect["mechz_steam"] = loadfx( "maps/zombie_tomb/fx_tomb_mech_dmg_steam" );
|
level._effect["mechz_steam"] = sys::loadfx( "maps/zombie_tomb/fx_tomb_mech_dmg_steam" );
|
||||||
level._effect["mechz_claw"] = loadfx( "maps/zombie_tomb/fx_tomb_mech_wpn_claw" );
|
level._effect["mechz_claw"] = sys::loadfx( "maps/zombie_tomb/fx_tomb_mech_wpn_claw" );
|
||||||
level._effect["mechz_claw_arm"] = loadfx( "maps/zombie_tomb/fx_tomb_mech_wpn_source" );
|
level._effect["mechz_claw_arm"] = sys::loadfx( "maps/zombie_tomb/fx_tomb_mech_wpn_source" );
|
||||||
level._effect["mech_booster_landing"] = loadfx( "maps/zombie_tomb/fx_tomb_mech_jump_landing" );
|
level._effect["mech_booster_landing"] = sys::loadfx( "maps/zombie_tomb/fx_tomb_mech_jump_landing" );
|
||||||
precache();
|
precache();
|
||||||
level thread init_animtree();
|
level thread init_animtree();
|
||||||
scripts\zm\zm_ai_pack_mod_main::add_visionset_callback( ::register_burn_overlay );
|
scripts\zm\zm_ai_pack_mod_main::add_visionset_callback( ::register_burn_overlay );
|
||||||
@ -96,7 +96,7 @@ init_animtree()
|
|||||||
init()
|
init()
|
||||||
{
|
{
|
||||||
maps\mp\zombies\_zm_ai_mechz_ffotd::mechz_init_start();
|
maps\mp\zombies\_zm_ai_mechz_ffotd::mechz_init_start();
|
||||||
level.mechz_spawners = getentarray( "mechz_spawner", "script_noteworthy" );
|
level.mechz_spawners = sys::getentarray( "mechz_spawner", "script_noteworthy" );
|
||||||
|
|
||||||
if ( level.mechz_spawners.size == 0 )
|
if ( level.mechz_spawners.size == 0 )
|
||||||
return;
|
return;
|
||||||
@ -189,21 +189,21 @@ init()
|
|||||||
mechz_setup_armor_pieces()
|
mechz_setup_armor_pieces()
|
||||||
{
|
{
|
||||||
level.mechz_armor_info = [];
|
level.mechz_armor_info = [];
|
||||||
level.mechz_armor_info[0] = spawnstruct();
|
level.mechz_armor_info[0] = sys::spawnstruct();
|
||||||
level.mechz_armor_info[0].model = "c_zom_mech_armor_knee_left";
|
level.mechz_armor_info[0].model = "c_zom_mech_armor_knee_left";
|
||||||
level.mechz_armor_info[0].tag = "J_Knee_Attach_LE";
|
level.mechz_armor_info[0].tag = "J_Knee_Attach_LE";
|
||||||
level.mechz_armor_info[1] = spawnstruct();
|
level.mechz_armor_info[1] = sys::spawnstruct();
|
||||||
level.mechz_armor_info[1].model = "c_zom_mech_armor_knee_right";
|
level.mechz_armor_info[1].model = "c_zom_mech_armor_knee_right";
|
||||||
level.mechz_armor_info[1].tag = "J_Knee_attach_RI";
|
level.mechz_armor_info[1].tag = "J_Knee_attach_RI";
|
||||||
level.mechz_armor_info[2] = spawnstruct();
|
level.mechz_armor_info[2] = sys::spawnstruct();
|
||||||
level.mechz_armor_info[2].model = "c_zom_mech_armor_shoulder_left";
|
level.mechz_armor_info[2].model = "c_zom_mech_armor_shoulder_left";
|
||||||
level.mechz_armor_info[2].tag = "J_ShoulderArmor_LE";
|
level.mechz_armor_info[2].tag = "J_ShoulderArmor_LE";
|
||||||
level.mechz_armor_info[3] = spawnstruct();
|
level.mechz_armor_info[3] = sys::spawnstruct();
|
||||||
level.mechz_armor_info[3].model = "c_zom_mech_armor_shoulder_right";
|
level.mechz_armor_info[3].model = "c_zom_mech_armor_shoulder_right";
|
||||||
level.mechz_armor_info[3].tag = "J_ShoulderArmor_RI";
|
level.mechz_armor_info[3].tag = "J_ShoulderArmor_RI";
|
||||||
level.mechz_armor_info[4] = spawnstruct();
|
level.mechz_armor_info[4] = sys::spawnstruct();
|
||||||
level.mechz_armor_info[4].tag = "J_Root_Attach_LE";
|
level.mechz_armor_info[4].tag = "J_Root_Attach_LE";
|
||||||
level.mechz_armor_info[5] = spawnstruct();
|
level.mechz_armor_info[5] = sys::spawnstruct();
|
||||||
level.mechz_armor_info[5].tag = "J_Root_Attach_RI";
|
level.mechz_armor_info[5].tag = "J_Root_Attach_RI";
|
||||||
|
|
||||||
for ( i = 0; i < level.mechz_armor_info.size; i++ )
|
for ( i = 0; i < level.mechz_armor_info.size; i++ )
|
||||||
@ -354,8 +354,8 @@ mechz_setup_snd()
|
|||||||
|
|
||||||
if ( !isdefined( self.sndloopent ) )
|
if ( !isdefined( self.sndloopent ) )
|
||||||
{
|
{
|
||||||
self.sndloopent = spawn( "script_origin", self.origin );
|
self.sndloopent = sys::spawn( "script_origin", self.origin );
|
||||||
self.sndloopent linkto( self, "tag_origin" );
|
self.sndloopent sys::linkto( self, "tag_origin" );
|
||||||
self thread snddeleteentondeath( self.sndloopent );
|
self thread snddeleteentondeath( self.sndloopent );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -528,7 +528,7 @@ mechz_attach_objects()
|
|||||||
|
|
||||||
for ( i = 0; i < level.mechz_armor_info.size; i++ )
|
for ( i = 0; i < level.mechz_armor_info.size; i++ )
|
||||||
{
|
{
|
||||||
self.armor_state[i] = spawnstruct();
|
self.armor_state[i] = sys::spawnstruct();
|
||||||
self.armor_state[i].index = i;
|
self.armor_state[i].index = i;
|
||||||
self.armor_state[i].tag = level.mechz_armor_info[i].tag;
|
self.armor_state[i].tag = level.mechz_armor_info[i].tag;
|
||||||
|
|
||||||
@ -545,17 +545,17 @@ mechz_attach_objects()
|
|||||||
self.m_claw = undefined;
|
self.m_claw = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
org = self gettagorigin( "tag_claw" );
|
org = self sys::gettagorigin( "tag_claw" );
|
||||||
ang = self gettagangles( "tag_claw" );
|
ang = self sys::gettagangles( "tag_claw" );
|
||||||
self.m_claw = spawn( "script_model", org );
|
self.m_claw = sys::spawn( "script_model", org );
|
||||||
self.m_claw setmodel( "c_zom_mech_claw" );
|
self.m_claw setmodel( "c_zom_mech_claw" );
|
||||||
self.m_claw.angles = ang;
|
self.m_claw.angles = ang;
|
||||||
self.m_claw linkto( self, "tag_claw" );
|
self.m_claw sys::linkto( self, "tag_claw" );
|
||||||
self.m_claw useanimtree( #animtree );
|
self.m_claw useanimtree( #animtree );
|
||||||
|
|
||||||
if ( isdefined( self.m_claw_damage_trigger ) )
|
if ( isdefined( self.m_claw_damage_trigger ) )
|
||||||
{
|
{
|
||||||
self.m_claw_damage_trigger unlink();
|
self.m_claw_damage_trigger sys::unlink();
|
||||||
self.m_claw_damage_trigger delete();
|
self.m_claw_damage_trigger delete();
|
||||||
self.m_claw_damage_trigger = undefined;
|
self.m_claw_damage_trigger = undefined;
|
||||||
}
|
}
|
||||||
@ -563,10 +563,10 @@ mechz_attach_objects()
|
|||||||
trigger_spawnflags = 0;
|
trigger_spawnflags = 0;
|
||||||
trigger_radius = 3;
|
trigger_radius = 3;
|
||||||
trigger_height = 15;
|
trigger_height = 15;
|
||||||
self.m_claw_damage_trigger = spawn( "trigger_damage", org, trigger_spawnflags, trigger_radius, trigger_height );
|
self.m_claw_damage_trigger = sys::spawn( "trigger_damage", org, trigger_spawnflags, trigger_radius, trigger_height );
|
||||||
self.m_claw_damage_trigger.angles = ang;
|
self.m_claw_damage_trigger.angles = ang;
|
||||||
self.m_claw_damage_trigger enablelinkto();
|
self.m_claw_damage_trigger enablesys::linkto();
|
||||||
self.m_claw_damage_trigger linkto( self, "tag_claw" );
|
self.m_claw_damage_trigger sys::linkto( self, "tag_claw" );
|
||||||
self thread mechz_claw_damage_trigger_thread();
|
self thread mechz_claw_damage_trigger_thread();
|
||||||
self attach( "c_zom_mech_faceplate", "J_Helmet", 0 );
|
self attach( "c_zom_mech_faceplate", "J_Helmet", 0 );
|
||||||
self.has_helmet = 1;
|
self.has_helmet = 1;
|
||||||
@ -643,14 +643,14 @@ mechz_spawn()
|
|||||||
self.zombie_init_done = 1;
|
self.zombie_init_done = 1;
|
||||||
self notify( "zombie_init_done" );
|
self notify( "zombie_init_done" );
|
||||||
self.allowpain = 0;
|
self.allowpain = 0;
|
||||||
self animmode( "normal" );
|
self sys::animmode( "normal" );
|
||||||
self orientmode( "face enemy" );
|
self sys::orientmode( "face enemy" );
|
||||||
self maps\mp\zombies\_zm_spawner::zombie_setup_attack_properties();
|
self maps\mp\zombies\_zm_spawner::zombie_setup_attack_properties();
|
||||||
self.completed_emerging_into_playable_area = 1;
|
self.completed_emerging_into_playable_area = 1;
|
||||||
self notify( "completed_emerging_into_playable_area" );
|
self notify( "completed_emerging_into_playable_area" );
|
||||||
self.no_powerups = 0;
|
self.no_powerups = 0;
|
||||||
self setfreecameralockonallowed( 0 );
|
self sys::setfreecameralockonallowed( 0 );
|
||||||
self notsolid();
|
self sys::notsolid();
|
||||||
self thread maps\mp\zombies\_zm_spawner::zombie_eye_glow();
|
self thread maps\mp\zombies\_zm_spawner::zombie_eye_glow();
|
||||||
level thread maps\mp\zombies\_zm_spawner::zombie_death_event( self );
|
level thread maps\mp\zombies\_zm_spawner::zombie_death_event( self );
|
||||||
self thread maps\mp\zombies\_zm_spawner::enemy_death_detection();
|
self thread maps\mp\zombies\_zm_spawner::enemy_death_detection();
|
||||||
@ -684,10 +684,10 @@ mechz_spawn()
|
|||||||
if ( !isdefined( spawn_pos.angles ) )
|
if ( !isdefined( spawn_pos.angles ) )
|
||||||
spawn_pos.angles = ( 0, 0, 0 );
|
spawn_pos.angles = ( 0, 0, 0 );
|
||||||
|
|
||||||
self animscripted( spawn_pos.origin, spawn_pos.angles, "zm_spawn" );
|
self sys::animscripted( spawn_pos.origin, spawn_pos.angles, "zm_spawn" );
|
||||||
self maps\mp\animscripts\zm_shared::donotetracks( "jump_anim" );
|
self maps\mp\animscripts\zm_shared::donotetracks( "jump_anim" );
|
||||||
self setfreecameralockonallowed( 1 );
|
self sys::setfreecameralockonallowed( 1 );
|
||||||
self solid();
|
self sys::solid();
|
||||||
self set_zombie_run_cycle( "walk" );
|
self set_zombie_run_cycle( "walk" );
|
||||||
|
|
||||||
if ( isdefined( level.mechz_find_flesh_override_func ) )
|
if ( isdefined( level.mechz_find_flesh_override_func ) )
|
||||||
@ -705,11 +705,11 @@ get_closest_mechz_spawn_pos( org )
|
|||||||
{
|
{
|
||||||
best_dist = -1;
|
best_dist = -1;
|
||||||
best_pos = undefined;
|
best_pos = undefined;
|
||||||
players = get_players();
|
players = sys::getplayers();
|
||||||
|
|
||||||
for ( i = 0; i < level.zombie_mechz_locations.size; i++ )
|
for ( i = 0; i < level.zombie_mechz_locations.size; i++ )
|
||||||
{
|
{
|
||||||
dist = distancesquared( org, level.zombie_mechz_locations[i].origin );
|
dist = sys::distancesquared( org, level.zombie_mechz_locations[i].origin );
|
||||||
|
|
||||||
if ( dist < best_dist || best_dist < 0 )
|
if ( dist < best_dist || best_dist < 0 )
|
||||||
{
|
{
|
||||||
@ -732,7 +732,7 @@ get_best_mechz_spawn_pos( ignore_used_positions )
|
|||||||
|
|
||||||
best_dist = -1;
|
best_dist = -1;
|
||||||
best_pos = undefined;
|
best_pos = undefined;
|
||||||
players = get_players();
|
players = sys::getplayers();
|
||||||
|
|
||||||
for ( i = 0; i < level.zombie_mechz_locations.size; i++ )
|
for ( i = 0; i < level.zombie_mechz_locations.size; i++ )
|
||||||
{
|
{
|
||||||
@ -746,7 +746,7 @@ get_best_mechz_spawn_pos( ignore_used_positions )
|
|||||||
{
|
{
|
||||||
if ( is_player_valid( players[j], 1, 1 ) )
|
if ( is_player_valid( players[j], 1, 1 ) )
|
||||||
{
|
{
|
||||||
dist = distancesquared( level.zombie_mechz_locations[i].origin, players[j].origin );
|
dist = sys::distancesquared( level.zombie_mechz_locations[i].origin, players[j].origin );
|
||||||
|
|
||||||
if ( dist < best_dist || best_dist < 0 )
|
if ( dist < best_dist || best_dist < 0 )
|
||||||
{
|
{
|
||||||
@ -785,7 +785,7 @@ mechz_health_increases()
|
|||||||
{
|
{
|
||||||
if ( !isdefined( level.mechz_last_spawn_round ) || level.round_number > level.mechz_last_spawn_round )
|
if ( !isdefined( level.mechz_last_spawn_round ) || level.round_number > level.mechz_last_spawn_round )
|
||||||
{
|
{
|
||||||
a_players = getplayers();
|
a_players = sys::getplayers();
|
||||||
n_player_modifier = 1;
|
n_player_modifier = 1;
|
||||||
|
|
||||||
if ( a_players.size > 1 )
|
if ( a_players.size > 1 )
|
||||||
@ -868,7 +868,7 @@ mechz_death()
|
|||||||
mechz_explode( str_tag, death_origin )
|
mechz_explode( str_tag, death_origin )
|
||||||
{
|
{
|
||||||
wait 2.0;
|
wait 2.0;
|
||||||
v_origin = self gettagorigin( str_tag );
|
v_origin = self sys::gettagorigin( str_tag );
|
||||||
level notify( "mechz_exploded", v_origin );
|
level notify( "mechz_exploded", v_origin );
|
||||||
playsoundatposition( "zmb_ai_mechz_death_explode", v_origin );
|
playsoundatposition( "zmb_ai_mechz_death_explode", v_origin );
|
||||||
playfx( level._effect["mechz_death"], v_origin );
|
playfx( level._effect["mechz_death"], v_origin );
|
||||||
@ -924,7 +924,7 @@ mechz_stun( time )
|
|||||||
|
|
||||||
while ( curr_time < time )
|
while ( curr_time < time )
|
||||||
{
|
{
|
||||||
self animscripted( self.origin, self.angles, "zm_stun" );
|
self sys::animscripted( self.origin, self.angles, "zm_stun" );
|
||||||
self maps\mp\animscripts\zm_shared::donotetracks( "stun_anim" );
|
self maps\mp\animscripts\zm_shared::donotetracks( "stun_anim" );
|
||||||
self clearanim( %root, 0 );
|
self clearanim( %root, 0 );
|
||||||
curr_time = curr_time + anim_time;
|
curr_time = curr_time + anim_time;
|
||||||
@ -956,18 +956,18 @@ mechz_tank_hit_callback()
|
|||||||
v_trace = physicstrace( self.origin, v_trace_end, ( -15, -15, -5 ), ( 15, 15, 5 ), self );
|
v_trace = physicstrace( self.origin, v_trace_end, ( -15, -15, -5 ), ( 15, 15, 5 ), self );
|
||||||
self.origin = v_trace["position"];
|
self.origin = v_trace["position"];
|
||||||
timer = 0;
|
timer = 0;
|
||||||
self animscripted( self.origin, self.angles, "zm_tank_hit_in" );
|
self sys::animscripted( self.origin, self.angles, "zm_tank_hit_in" );
|
||||||
self maps\mp\animscripts\zm_shared::donotetracks( "pain_anim" );
|
self maps\mp\animscripts\zm_shared::donotetracks( "pain_anim" );
|
||||||
anim_length = self getanimlengthfromasd( "zm_tank_hit_loop", 0 );
|
anim_length = self getanimlengthfromasd( "zm_tank_hit_loop", 0 );
|
||||||
|
|
||||||
while ( timer < level.mechz_tank_knockdown_time )
|
while ( timer < level.mechz_tank_knockdown_time )
|
||||||
{
|
{
|
||||||
timer = timer + anim_length;
|
timer = timer + anim_length;
|
||||||
self animscripted( self.origin, self.angles, "zm_tank_hit_loop" );
|
self sys::animscripted( self.origin, self.angles, "zm_tank_hit_loop" );
|
||||||
self maps\mp\animscripts\zm_shared::donotetracks( "pain_anim" );
|
self maps\mp\animscripts\zm_shared::donotetracks( "pain_anim" );
|
||||||
}
|
}
|
||||||
|
|
||||||
self animscripted( self.origin, self.angles, "zm_tank_hit_out" );
|
self sys::animscripted( self.origin, self.angles, "zm_tank_hit_out" );
|
||||||
self maps\mp\animscripts\zm_shared::donotetracks( "pain_anim" );
|
self maps\mp\animscripts\zm_shared::donotetracks( "pain_anim" );
|
||||||
/#
|
/#
|
||||||
if ( getdvarint( #"_id_E7121222" ) > 1 )
|
if ( getdvarint( #"_id_E7121222" ) > 1 )
|
||||||
@ -976,20 +976,20 @@ mechz_tank_hit_callback()
|
|||||||
self.not_interruptable = 0;
|
self.not_interruptable = 0;
|
||||||
self.mechz_hit_by_tank = 0;
|
self.mechz_hit_by_tank = 0;
|
||||||
|
|
||||||
if ( !level.vh_tank ent_flag( "tank_moving" ) && self istouching( level.vh_tank ) )
|
if ( !level.vh_tank ent_flag( "tank_moving" ) && self sys::istouching( level.vh_tank ) )
|
||||||
{
|
{
|
||||||
self notsolid();
|
self sys::notsolid();
|
||||||
self ghost();
|
self sys::ghost();
|
||||||
self.mechz_hidden = 1;
|
self.mechz_hidden = 1;
|
||||||
|
|
||||||
if ( isdefined( self.m_claw ) )
|
if ( isdefined( self.m_claw ) )
|
||||||
self.m_claw ghost();
|
self.m_claw sys::ghost();
|
||||||
|
|
||||||
self.fx_field_old = self.fx_field;
|
self.fx_field_old = self.fx_field;
|
||||||
self thread maps\mp\zombies\_zm_spawner::zombie_eye_glow_stop();
|
self thread maps\mp\zombies\_zm_spawner::zombie_eye_glow_stop();
|
||||||
self fx_cleanup();
|
self fx_cleanup();
|
||||||
self mechz_do_jump();
|
self mechz_do_jump();
|
||||||
self solid();
|
self sys::solid();
|
||||||
self.mechz_hidden = 0;
|
self.mechz_hidden = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1014,18 +1014,18 @@ mechz_robot_stomp_callback()
|
|||||||
v_trace = physicstrace( self.origin, v_trace_end, ( -15, -15, -5 ), ( 15, 15, 5 ), self );
|
v_trace = physicstrace( self.origin, v_trace_end, ( -15, -15, -5 ), ( 15, 15, 5 ), self );
|
||||||
self.origin = v_trace["position"];
|
self.origin = v_trace["position"];
|
||||||
timer = 0;
|
timer = 0;
|
||||||
self animscripted( self.origin, self.angles, "zm_robot_hit_in" );
|
self sys::animscripted( self.origin, self.angles, "zm_robot_hit_in" );
|
||||||
self maps\mp\animscripts\zm_shared::donotetracks( "pain_anim" );
|
self maps\mp\animscripts\zm_shared::donotetracks( "pain_anim" );
|
||||||
anim_length = self getanimlengthfromasd( "zm_robot_hit_loop", 0 );
|
anim_length = self getanimlengthfromasd( "zm_robot_hit_loop", 0 );
|
||||||
|
|
||||||
while ( timer < level.mechz_robot_knockdown_time )
|
while ( timer < level.mechz_robot_knockdown_time )
|
||||||
{
|
{
|
||||||
timer = timer + anim_length;
|
timer = timer + anim_length;
|
||||||
self animscripted( self.origin, self.angles, "zm_robot_hit_loop" );
|
self sys::animscripted( self.origin, self.angles, "zm_robot_hit_loop" );
|
||||||
self maps\mp\animscripts\zm_shared::donotetracks( "pain_anim" );
|
self maps\mp\animscripts\zm_shared::donotetracks( "pain_anim" );
|
||||||
}
|
}
|
||||||
|
|
||||||
self animscripted( self.origin, self.angles, "zm_robot_hit_out" );
|
self sys::animscripted( self.origin, self.angles, "zm_robot_hit_out" );
|
||||||
self maps\mp\animscripts\zm_shared::donotetracks( "jump_anim" );
|
self maps\mp\animscripts\zm_shared::donotetracks( "jump_anim" );
|
||||||
/#
|
/#
|
||||||
if ( getdvarint( #"_id_E7121222" ) > 1 )
|
if ( getdvarint( #"_id_E7121222" ) > 1 )
|
||||||
@ -1043,7 +1043,7 @@ mechz_delayed_item_delete()
|
|||||||
|
|
||||||
mechz_get_closest_valid_player()
|
mechz_get_closest_valid_player()
|
||||||
{
|
{
|
||||||
players = get_players();
|
players = sys::getplayers();
|
||||||
|
|
||||||
if ( isdefined( self.ignore_player ) )
|
if ( isdefined( self.ignore_player ) )
|
||||||
{
|
{
|
||||||
@ -1083,7 +1083,7 @@ mechz_get_closest_valid_player()
|
|||||||
|
|
||||||
get_favorite_enemy( origin, players )
|
get_favorite_enemy( origin, players )
|
||||||
{
|
{
|
||||||
mechz_targets = getplayers();
|
mechz_targets = sys::getplayers();
|
||||||
least_hunted = undefined;
|
least_hunted = undefined;
|
||||||
best_hunted_val = -1;
|
best_hunted_val = -1;
|
||||||
best_dist = -1;
|
best_dist = -1;
|
||||||
@ -1107,7 +1107,7 @@ get_favorite_enemy( origin, players )
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
distances[i] = distancesquared( self.origin, mechz_targets[i].origin );
|
distances[i] = sys::distancesquared( self.origin, mechz_targets[i].origin );
|
||||||
}
|
}
|
||||||
|
|
||||||
found_weapon_target = 0;
|
found_weapon_target = 0;
|
||||||
@ -1138,14 +1138,14 @@ get_favorite_enemy( origin, players )
|
|||||||
|
|
||||||
if ( isdefined( self.favoriteenemy ) && is_player_valid( self.favoriteenemy, 1, 1 ) )
|
if ( isdefined( self.favoriteenemy ) && is_player_valid( self.favoriteenemy, 1, 1 ) )
|
||||||
{
|
{
|
||||||
if ( distancesquared( self.origin, self.favoriteenemy.origin ) <= level.mechz_sticky_dist_sq )
|
if ( sys::distancesquared( self.origin, self.favoriteenemy.origin ) <= level.mechz_sticky_dist_sq )
|
||||||
{
|
{
|
||||||
self.favoriteenemy.hunted_by++;
|
self.favoriteenemy.hunted_by++;
|
||||||
return self.favoriteenemy;
|
return self.favoriteenemy;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func = getFunction( "maps/mp/zm_tomb_chamber", "is_player_in_chamber" );
|
func = pluto_sys::getfunction( "maps/mp/zm_tomb_chamber", "is_player_in_chamber" );
|
||||||
for ( i = 0; i < mechz_targets.size; i++ )
|
for ( i = 0; i < mechz_targets.size; i++ )
|
||||||
{
|
{
|
||||||
if ( isdefined( mechz_targets[i].in_giant_robot_head ) )
|
if ( isdefined( mechz_targets[i].in_giant_robot_head ) )
|
||||||
@ -1191,9 +1191,9 @@ mechz_check_in_arc( right_offset )
|
|||||||
enemy_vec = self.favoriteenemy.origin - origin;
|
enemy_vec = self.favoriteenemy.origin - origin;
|
||||||
enemy_yaw_vec = ( enemy_vec[0], enemy_vec[1], 0 );
|
enemy_yaw_vec = ( enemy_vec[0], enemy_vec[1], 0 );
|
||||||
facing_yaw_vec = ( facing_vec[0], facing_vec[1], 0 );
|
facing_yaw_vec = ( facing_vec[0], facing_vec[1], 0 );
|
||||||
enemy_yaw_vec = vectornormalize( enemy_yaw_vec );
|
enemy_yaw_vec = sys::vectornormalize( enemy_yaw_vec );
|
||||||
facing_yaw_vec = vectornormalize( facing_yaw_vec );
|
facing_yaw_vec = sys::vectornormalize( facing_yaw_vec );
|
||||||
enemy_dot = vectordot( facing_yaw_vec, enemy_yaw_vec );
|
enemy_dot = sys::vectordot( facing_yaw_vec, enemy_yaw_vec );
|
||||||
|
|
||||||
if ( enemy_dot < cos( level.mechz_aim_max_yaw ) )
|
if ( enemy_dot < cos( level.mechz_aim_max_yaw ) )
|
||||||
return false;
|
return false;
|
||||||
@ -1284,7 +1284,7 @@ watch_for_player_dist()
|
|||||||
else
|
else
|
||||||
reset_dist = level.mechz_reset_dist_sq;
|
reset_dist = level.mechz_reset_dist_sq;
|
||||||
|
|
||||||
if ( !isdefined( player ) || distancesquared( player.origin, self.origin ) > reset_dist )
|
if ( !isdefined( player ) || sys::distancesquared( player.origin, self.origin ) > reset_dist )
|
||||||
self.disable_complex_behaviors = 0;
|
self.disable_complex_behaviors = 0;
|
||||||
|
|
||||||
wait 0.5;
|
wait 0.5;
|
||||||
@ -1352,14 +1352,14 @@ mechz_find_flesh()
|
|||||||
println( "\\n\\tMZ: No Enemy, idling\\n" );
|
println( "\\n\\tMZ: No Enemy, idling\\n" );
|
||||||
#/
|
#/
|
||||||
self.goal_pos = self.origin;
|
self.goal_pos = self.origin;
|
||||||
self setgoalpos( self.goal_pos );
|
self sys::setgoalpos( self.goal_pos );
|
||||||
self.ai_state = "idle";
|
self.ai_state = "idle";
|
||||||
self setanimstatefromasd( "zm_idle" );
|
self sys::setanimstatefromasd( "zm_idle" );
|
||||||
wait 0.5;
|
wait 0.5;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
entity_on_tank_func = getFunction( "maps/mp/zm_tomb_tank", "entity_on_tank" );
|
entity_on_tank_func = pluto_sys::getfunction( "maps/mp/zm_tomb_tank", "entity_on_tank" );
|
||||||
if ( isDefined( entity_on_tank_func ) && player [[ entity_on_tank_func ]]() )
|
if ( isDefined( entity_on_tank_func ) && player [[ entity_on_tank_func ]]() )
|
||||||
{
|
{
|
||||||
if ( level.vh_tank ent_flag( "tank_moving" ) )
|
if ( level.vh_tank ent_flag( "tank_moving" ) )
|
||||||
@ -1385,7 +1385,7 @@ mechz_find_flesh()
|
|||||||
if ( isdefined( self.jump_pos ) )
|
if ( isdefined( self.jump_pos ) )
|
||||||
{
|
{
|
||||||
self.goal_pos = self.jump_pos.origin;
|
self.goal_pos = self.jump_pos.origin;
|
||||||
self setgoalpos( self.goal_pos );
|
self sys::setgoalpos( self.goal_pos );
|
||||||
}
|
}
|
||||||
|
|
||||||
wait 0.5;
|
wait 0.5;
|
||||||
@ -1403,7 +1403,7 @@ mechz_find_flesh()
|
|||||||
self.ai_state = "tracking_tank";
|
self.ai_state = "tracking_tank";
|
||||||
self.goalradius = level.mechz_custom_goalradius;
|
self.goalradius = level.mechz_custom_goalradius;
|
||||||
self.custom_goalradius_override = level.mechz_custom_goalradius;
|
self.custom_goalradius_override = level.mechz_custom_goalradius;
|
||||||
func = getFunction( "maps/mp/zm_tomb_tank", "get_closest_mechz_tag_on_tank" );
|
func = pluto_sys::getfunction( "maps/mp/zm_tomb_tank", "get_closest_mechz_tag_on_tank" );
|
||||||
closest_tank_tag = undefined;
|
closest_tank_tag = undefined;
|
||||||
if ( isDefined( func ) )
|
if ( isDefined( func ) )
|
||||||
{
|
{
|
||||||
@ -1420,16 +1420,16 @@ mechz_find_flesh()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
closest_tank_tag_pos = level.vh_tank gettagorigin( closest_tank_tag );
|
closest_tank_tag_pos = level.vh_tank sys::gettagorigin( closest_tank_tag );
|
||||||
|
|
||||||
if ( abs( self.origin[2] - closest_tank_tag_pos[2] ) >= level.mechz_custom_goalradius || distance2dsquared( self.origin, closest_tank_tag_pos ) >= level.mechz_custom_goalradius_sq )
|
if ( abs( self.origin[2] - closest_tank_tag_pos[2] ) >= level.mechz_custom_goalradius || sys::distance2dsquared( self.origin, closest_tank_tag_pos ) >= level.mechz_custom_goalradius_sq )
|
||||||
{
|
{
|
||||||
/#
|
/#
|
||||||
if ( getdvarint( #"_id_E7121222" ) > 1 )
|
if ( getdvarint( #"_id_E7121222" ) > 1 )
|
||||||
println( "\\n\\tMZ: Enemy on tank, setting tank pos as goal\\n" );
|
println( "\\n\\tMZ: Enemy on tank, setting tank pos as goal\\n" );
|
||||||
#/
|
#/
|
||||||
self.goal_pos = closest_tank_tag_pos;
|
self.goal_pos = closest_tank_tag_pos;
|
||||||
self setgoalpos( self.goal_pos );
|
self sys::setgoalpos( self.goal_pos );
|
||||||
self waittill_any_or_timeout( 0.5, "goal", "bad_path" );
|
self waittill_any_or_timeout( 0.5, "goal", "bad_path" );
|
||||||
|
|
||||||
if ( isDefined( entity_on_tank_func ) && !player [[ entity_on_tank_func ]]() )
|
if ( isDefined( entity_on_tank_func ) && !player [[ entity_on_tank_func ]]() )
|
||||||
@ -1442,7 +1442,7 @@ mechz_find_flesh()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( abs( self.origin[2] - closest_tank_tag_pos[2] ) < level.mechz_custom_goalradius && distance2dsquared( self.origin, closest_tank_tag_pos ) < level.mechz_custom_goalradius_sq )
|
if ( abs( self.origin[2] - closest_tank_tag_pos[2] ) < level.mechz_custom_goalradius && sys::distance2dsquared( self.origin, closest_tank_tag_pos ) < level.mechz_custom_goalradius_sq )
|
||||||
{
|
{
|
||||||
/#
|
/#
|
||||||
if ( getdvarint( #"_id_E7121222" ) > 1 )
|
if ( getdvarint( #"_id_E7121222" ) > 1 )
|
||||||
@ -1467,7 +1467,7 @@ mechz_find_flesh()
|
|||||||
println( "\\n\\tMZ: Jump Requested, going to jump pos\\n" );
|
println( "\\n\\tMZ: Jump Requested, going to jump pos\\n" );
|
||||||
#/
|
#/
|
||||||
self.goal_pos = self.jump_pos.origin;
|
self.goal_pos = self.jump_pos.origin;
|
||||||
self setgoalpos( self.goal_pos );
|
self sys::setgoalpos( self.goal_pos );
|
||||||
wait 0.5;
|
wait 0.5;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -1479,11 +1479,11 @@ mechz_find_flesh()
|
|||||||
println( "\\n\\tMZ: Sprinting\\n" );
|
println( "\\n\\tMZ: Sprinting\\n" );
|
||||||
#/
|
#/
|
||||||
self.goal_pos = player.origin;
|
self.goal_pos = player.origin;
|
||||||
self setgoalpos( self.goal_pos );
|
self sys::setgoalpos( self.goal_pos );
|
||||||
wait 0.5;
|
wait 0.5;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else if ( distancesquared( self.origin, player.origin ) < level.mechz_aggro_dist_sq )
|
else if ( sys::distancesquared( self.origin, player.origin ) < level.mechz_aggro_dist_sq )
|
||||||
{
|
{
|
||||||
/#
|
/#
|
||||||
if ( getdvarint( #"_id_E7121222" ) > 1 )
|
if ( getdvarint( #"_id_E7121222" ) > 1 )
|
||||||
@ -1521,13 +1521,13 @@ mechz_find_flesh()
|
|||||||
damage_prone_players()
|
damage_prone_players()
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon( "death" );
|
||||||
a_players = getplayers();
|
a_players = sys::getplayers();
|
||||||
|
|
||||||
foreach ( player in a_players )
|
foreach ( player in a_players )
|
||||||
{
|
{
|
||||||
if ( isdefined( self.favoriteenemy ) && self.favoriteenemy == player )
|
if ( isdefined( self.favoriteenemy ) && self.favoriteenemy == player )
|
||||||
{
|
{
|
||||||
n_dist = distance2dsquared( player.origin, self.origin );
|
n_dist = sys::distance2dsquared( player.origin, self.origin );
|
||||||
|
|
||||||
if ( n_dist < 2025 )
|
if ( n_dist < 2025 )
|
||||||
{
|
{
|
||||||
@ -1550,7 +1550,7 @@ damage_prone_players()
|
|||||||
|
|
||||||
melee_anim_func()
|
melee_anim_func()
|
||||||
{
|
{
|
||||||
self.next_leap_time = gettime() + 1500;
|
self.next_leap_time = sys::gettime() + 1500;
|
||||||
}
|
}
|
||||||
|
|
||||||
mechz_launch_armor_piece()
|
mechz_launch_armor_piece()
|
||||||
@ -1719,7 +1719,7 @@ mechz_damage_override( inflictor, attacker, damage, flags, meansofdeath, weapon,
|
|||||||
if ( !( isdefined( self.not_interruptable ) && self.not_interruptable ) && !( isdefined( self.is_traversing ) && self.is_traversing ) )
|
if ( !( isdefined( self.not_interruptable ) && self.not_interruptable ) && !( isdefined( self.is_traversing ) && self.is_traversing ) )
|
||||||
{
|
{
|
||||||
self mechz_interrupt();
|
self mechz_interrupt();
|
||||||
self animscripted( self.origin, self.angles, "zm_pain_faceplate" );
|
self sys::animscripted( self.origin, self.angles, "zm_pain_faceplate" );
|
||||||
self maps\mp\animscripts\zm_shared::donotetracks( "pain_anim_faceplate" );
|
self maps\mp\animscripts\zm_shared::donotetracks( "pain_anim_faceplate" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1730,8 +1730,8 @@ mechz_damage_override( inflictor, attacker, damage, flags, meansofdeath, weapon,
|
|||||||
{
|
{
|
||||||
self.powerplant_covered = 0;
|
self.powerplant_covered = 0;
|
||||||
self detach( "c_zom_mech_powersupply_cap", "tag_powersupply" );
|
self detach( "c_zom_mech_powersupply_cap", "tag_powersupply" );
|
||||||
cap_model = spawn( "script_model", self gettagorigin( "tag_powersupply" ) );
|
cap_model = sys::spawn( "script_model", self sys::gettagorigin( "tag_powersupply" ) );
|
||||||
cap_model.angles = self gettagangles( "tag_powersupply" );
|
cap_model.angles = self sys::gettagangles( "tag_powersupply" );
|
||||||
cap_model setmodel( "c_zom_mech_powersupply_cap" );
|
cap_model setmodel( "c_zom_mech_powersupply_cap" );
|
||||||
cap_model physicslaunch( cap_model.origin, anglestoforward( cap_model.angles ) );
|
cap_model physicslaunch( cap_model.origin, anglestoforward( cap_model.angles ) );
|
||||||
cap_model thread mechz_delayed_item_delete();
|
cap_model thread mechz_delayed_item_delete();
|
||||||
@ -1742,7 +1742,7 @@ mechz_damage_override( inflictor, attacker, damage, flags, meansofdeath, weapon,
|
|||||||
if ( !( isdefined( self.not_interruptable ) && self.not_interruptable ) && !( isdefined( self.is_traversing ) && self.is_traversing ) )
|
if ( !( isdefined( self.not_interruptable ) && self.not_interruptable ) && !( isdefined( self.is_traversing ) && self.is_traversing ) )
|
||||||
{
|
{
|
||||||
self mechz_interrupt();
|
self mechz_interrupt();
|
||||||
self animscripted( self.origin, self.angles, "zm_pain_powercore" );
|
self sys::animscripted( self.origin, self.angles, "zm_pain_powercore" );
|
||||||
self maps\mp\animscripts\zm_shared::donotetracks( "pain_anim_powercore" );
|
self maps\mp\animscripts\zm_shared::donotetracks( "pain_anim_powercore" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1793,7 +1793,7 @@ mechz_set_locomotion_speed()
|
|||||||
self endon( "death" );
|
self endon( "death" );
|
||||||
self.prev_move_speed = self.zombie_move_speed;
|
self.prev_move_speed = self.zombie_move_speed;
|
||||||
|
|
||||||
entity_on_tank_func = getFunction( "maps/mp/zm_tomb_tank", "entity_on_tank" );
|
entity_on_tank_func = pluto_sys::getfunction( "maps/mp/zm_tomb_tank", "entity_on_tank" );
|
||||||
if ( !isdefined( self.favoriteenemy ) )
|
if ( !isdefined( self.favoriteenemy ) )
|
||||||
self.zombie_move_speed = "walk";
|
self.zombie_move_speed = "walk";
|
||||||
else if ( isdefined( self.force_run ) && self.force_run )
|
else if ( isdefined( self.force_run ) && self.force_run )
|
||||||
@ -1802,7 +1802,7 @@ mechz_set_locomotion_speed()
|
|||||||
self.zombie_move_speed = "sprint";
|
self.zombie_move_speed = "sprint";
|
||||||
else if ( isDefined( entity_on_tank_func ) && isdefined( self.favoriteenemy ) && self.favoriteenemy [[ entity_on_tank_func ]]() && isdefined( level.vh_tank ) && level.vh_tank ent_flag( "tank_activated" ) )
|
else if ( isDefined( entity_on_tank_func ) && isdefined( self.favoriteenemy ) && self.favoriteenemy [[ entity_on_tank_func ]]() && isdefined( level.vh_tank ) && level.vh_tank ent_flag( "tank_activated" ) )
|
||||||
self.zombie_move_speed = "run";
|
self.zombie_move_speed = "run";
|
||||||
else if ( isdefined( self.favoriteenemy ) && distancesquared( self.origin, self.favoriteenemy.origin ) > level.mechz_dist_for_sprint )
|
else if ( isdefined( self.favoriteenemy ) && sys::distancesquared( self.origin, self.favoriteenemy.origin ) > level.mechz_dist_for_sprint )
|
||||||
self.zombie_move_speed = "run";
|
self.zombie_move_speed = "run";
|
||||||
else if ( !( isdefined( self.has_powerplant ) && self.has_powerplant ) )
|
else if ( !( isdefined( self.has_powerplant ) && self.has_powerplant ) )
|
||||||
self.zombie_move_speed = "walk";
|
self.zombie_move_speed = "walk";
|
||||||
@ -1812,12 +1812,12 @@ mechz_set_locomotion_speed()
|
|||||||
if ( self.zombie_move_speed == "sprint" && self.prev_move_speed != "sprint" )
|
if ( self.zombie_move_speed == "sprint" && self.prev_move_speed != "sprint" )
|
||||||
{
|
{
|
||||||
self mechz_interrupt();
|
self mechz_interrupt();
|
||||||
self animscripted( self.origin, self.angles, "zm_sprint_intro" );
|
self sys::animscripted( self.origin, self.angles, "zm_sprint_intro" );
|
||||||
self maps\mp\animscripts\zm_shared::donotetracks( "jump_anim" );
|
self maps\mp\animscripts\zm_shared::donotetracks( "jump_anim" );
|
||||||
}
|
}
|
||||||
else if ( self.zombie_move_speed != "sprint" && self.prev_move_speed == "sprint" )
|
else if ( self.zombie_move_speed != "sprint" && self.prev_move_speed == "sprint" )
|
||||||
{
|
{
|
||||||
self animscripted( self.origin, self.angles, "zm_sprint_outro" );
|
self sys::animscripted( self.origin, self.angles, "zm_sprint_outro" );
|
||||||
self maps\mp\animscripts\zm_shared::donotetracks( "jump_anim" );
|
self maps\mp\animscripts\zm_shared::donotetracks( "jump_anim" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1827,7 +1827,7 @@ mechz_set_locomotion_speed()
|
|||||||
response_to_air_raid_siren_vo()
|
response_to_air_raid_siren_vo()
|
||||||
{
|
{
|
||||||
wait 3.0;
|
wait 3.0;
|
||||||
a_players = getplayers();
|
a_players = sys::getplayers();
|
||||||
|
|
||||||
if ( a_players.size == 0 )
|
if ( a_players.size == 0 )
|
||||||
return;
|
return;
|
||||||
@ -1877,7 +1877,7 @@ start_see_mech_zombie_vo()
|
|||||||
ai_mechz = zombie;
|
ai_mechz = zombie;
|
||||||
}
|
}
|
||||||
|
|
||||||
a_players = getplayers();
|
a_players = sys::getplayers();
|
||||||
|
|
||||||
if ( a_players.size == 0 )
|
if ( a_players.size == 0 )
|
||||||
return;
|
return;
|
||||||
@ -1897,7 +1897,7 @@ player_looking_at_mechz_watcher( ai_mechz )
|
|||||||
|
|
||||||
while ( true )
|
while ( true )
|
||||||
{
|
{
|
||||||
if ( distancesquared( self.origin, ai_mechz.origin ) < 1000000 )
|
if ( sys::distancesquared( self.origin, ai_mechz.origin ) < 1000000 )
|
||||||
{
|
{
|
||||||
if ( self is_player_looking_at( ai_mechz.origin + vectorscale( ( 0, 0, 1 ), 60.0 ), 0.75 ) )
|
if ( self is_player_looking_at( ai_mechz.origin + vectorscale( ( 0, 0, 1 ), 60.0 ), 0.75 ) )
|
||||||
{
|
{
|
||||||
@ -1937,14 +1937,14 @@ play_shoot_arm_hint_vo()
|
|||||||
if ( !isdefined( self.e_grabbed ) )
|
if ( !isdefined( self.e_grabbed ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
a_players = getplayers();
|
a_players = sys::getplayers();
|
||||||
|
|
||||||
foreach ( player in a_players )
|
foreach ( player in a_players )
|
||||||
{
|
{
|
||||||
if ( player == self.e_grabbed )
|
if ( player == self.e_grabbed )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( distancesquared( self.origin, player.origin ) < 1000000 )
|
if ( sys::distancesquared( self.origin, player.origin ) < 1000000 )
|
||||||
{
|
{
|
||||||
if ( player is_player_looking_at( self.origin + vectorscale( ( 0, 0, 1 ), 60.0 ), 0.75 ) )
|
if ( player is_player_looking_at( self.origin + vectorscale( ( 0, 0, 1 ), 60.0 ), 0.75 ) )
|
||||||
{
|
{
|
||||||
@ -1980,14 +1980,14 @@ mechz_hint_vo()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
a_players = getplayers();
|
a_players = sys::getplayers();
|
||||||
|
|
||||||
foreach ( player in a_players )
|
foreach ( player in a_players )
|
||||||
{
|
{
|
||||||
if ( isdefined( self.e_grabbed ) && self.e_grabbed == player )
|
if ( isdefined( self.e_grabbed ) && self.e_grabbed == player )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( distancesquared( self.origin, player.origin ) < 1000000 )
|
if ( sys::distancesquared( self.origin, player.origin ) < 1000000 )
|
||||||
{
|
{
|
||||||
if ( player is_player_looking_at( self.origin + vectorscale( ( 0, 0, 1 ), 60.0 ), 0.75 ) )
|
if ( player is_player_looking_at( self.origin + vectorscale( ( 0, 0, 1 ), 60.0 ), 0.75 ) )
|
||||||
{
|
{
|
||||||
@ -2007,14 +2007,14 @@ mechz_hint_vo()
|
|||||||
shoot_mechz_head_vo()
|
shoot_mechz_head_vo()
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon( "death" );
|
||||||
a_players = getplayers();
|
a_players = sys::getplayers();
|
||||||
|
|
||||||
foreach ( player in a_players )
|
foreach ( player in a_players )
|
||||||
{
|
{
|
||||||
if ( isdefined( self.e_grabbed ) && self.e_grabbed == player )
|
if ( isdefined( self.e_grabbed ) && self.e_grabbed == player )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( distancesquared( self.origin, player.origin ) < 1000000 )
|
if ( sys::distancesquared( self.origin, player.origin ) < 1000000 )
|
||||||
{
|
{
|
||||||
if ( player is_player_looking_at( self.origin + vectorscale( ( 0, 0, 1 ), 60.0 ), 0.75 ) )
|
if ( player is_player_looking_at( self.origin + vectorscale( ( 0, 0, 1 ), 60.0 ), 0.75 ) )
|
||||||
{
|
{
|
||||||
@ -2030,11 +2030,11 @@ shoot_mechz_head_vo()
|
|||||||
|
|
||||||
mechz_jump_vo()
|
mechz_jump_vo()
|
||||||
{
|
{
|
||||||
a_players = getplayers();
|
a_players = sys::getplayers();
|
||||||
|
|
||||||
foreach ( player in a_players )
|
foreach ( player in a_players )
|
||||||
{
|
{
|
||||||
if ( distancesquared( self.origin, player.origin ) < 1000000 )
|
if ( sys::distancesquared( self.origin, player.origin ) < 1000000 )
|
||||||
{
|
{
|
||||||
if ( player is_player_looking_at( self.origin + vectorscale( ( 0, 0, 1 ), 60.0 ), 0.5 ) )
|
if ( player is_player_looking_at( self.origin + vectorscale( ( 0, 0, 1 ), 60.0 ), 0.5 ) )
|
||||||
{
|
{
|
||||||
@ -2052,11 +2052,11 @@ mechz_stomped_by_giant_robot_vo()
|
|||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon( "death" );
|
||||||
wait 5.0;
|
wait 5.0;
|
||||||
a_players = getplayers();
|
a_players = sys::getplayers();
|
||||||
|
|
||||||
foreach ( player in a_players )
|
foreach ( player in a_players )
|
||||||
{
|
{
|
||||||
if ( distancesquared( self.origin, player.origin ) < 1000000 )
|
if ( sys::distancesquared( self.origin, player.origin ) < 1000000 )
|
||||||
{
|
{
|
||||||
if ( player is_player_looking_at( self.origin + vectorscale( ( 0, 0, 1 ), 60.0 ), 0.75 ) )
|
if ( player is_player_looking_at( self.origin + vectorscale( ( 0, 0, 1 ), 60.0 ), 0.75 ) )
|
||||||
{
|
{
|
||||||
|
@ -25,7 +25,7 @@ mechz_in_range_for_jump()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
dist = distancesquared( self.origin, self.jump_pos.origin );
|
dist = sys::distancesquared( self.origin, self.jump_pos.origin );
|
||||||
|
|
||||||
if ( dist <= 100 )
|
if ( dist <= 100 )
|
||||||
return true;
|
return true;
|
||||||
@ -39,7 +39,7 @@ mechz_jump_think( spawn_pos )
|
|||||||
self endon( "stop_jump_think" );
|
self endon( "stop_jump_think" );
|
||||||
self.closest_jump_point = spawn_pos;
|
self.closest_jump_point = spawn_pos;
|
||||||
self.goal_pos = self.origin;
|
self.goal_pos = self.origin;
|
||||||
self setgoalpos( self.goal_pos );
|
self sys::setgoalpos( self.goal_pos );
|
||||||
self thread mechz_jump_stuck_watcher();
|
self thread mechz_jump_stuck_watcher();
|
||||||
|
|
||||||
while ( true )
|
while ( true )
|
||||||
@ -114,7 +114,7 @@ watch_for_valid_melee()
|
|||||||
{
|
{
|
||||||
self waittillmatch( "melee_anim", "end" );
|
self waittillmatch( "melee_anim", "end" );
|
||||||
|
|
||||||
if ( isdefined( self.favoriteenemy ) && distancesquared( self.origin, self.favoriteenemy.origin ) < 16384 )
|
if ( isdefined( self.favoriteenemy ) && sys::distancesquared( self.origin, self.favoriteenemy.origin ) < 16384 )
|
||||||
{
|
{
|
||||||
/#
|
/#
|
||||||
if ( getdvarint( #"_id_E7121222" ) > 1 )
|
if ( getdvarint( #"_id_E7121222" ) > 1 )
|
||||||
@ -202,7 +202,7 @@ mechz_should_jump()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
dist = distancesquared( self.origin, self.favoriteenemy.origin );
|
dist = sys::distancesquared( self.origin, self.favoriteenemy.origin );
|
||||||
|
|
||||||
if ( dist >= level.mechz_jump_dist_threshold )
|
if ( dist >= level.mechz_jump_dist_threshold )
|
||||||
{
|
{
|
||||||
@ -238,28 +238,28 @@ mechz_do_jump( wait_for_stationary_tank )
|
|||||||
println( "\\nMZ: Jump setting not interruptable\\n" );
|
println( "\\nMZ: Jump setting not interruptable\\n" );
|
||||||
#/
|
#/
|
||||||
self.not_interruptable = 1;
|
self.not_interruptable = 1;
|
||||||
self setfreecameralockonallowed( 0 );
|
self sys::setfreecameralockonallowed( 0 );
|
||||||
self thread mechz_jump_vo();
|
self thread mechz_jump_vo();
|
||||||
self animscripted( self.origin, self.angles, "zm_fly_out" );
|
self sys::animscripted( self.origin, self.angles, "zm_fly_out" );
|
||||||
self maps\mp\animscripts\zm_shared::donotetracks( "jump_anim" );
|
self maps\mp\animscripts\zm_shared::donotetracks( "jump_anim" );
|
||||||
self ghost();
|
self sys::ghost();
|
||||||
self.mechz_hidden = 1;
|
self.mechz_hidden = 1;
|
||||||
|
|
||||||
if ( isdefined( self.m_claw ) )
|
if ( isdefined( self.m_claw ) )
|
||||||
self.m_claw ghost();
|
self.m_claw sys::ghost();
|
||||||
|
|
||||||
if ( self.fx_field )
|
if ( self.fx_field )
|
||||||
self.fx_field_old = self.fx_field;
|
self.fx_field_old = self.fx_field;
|
||||||
|
|
||||||
self thread maps\mp\zombies\_zm_spawner::zombie_eye_glow_stop();
|
self thread maps\mp\zombies\_zm_spawner::zombie_eye_glow_stop();
|
||||||
self fx_cleanup();
|
self fx_cleanup();
|
||||||
self animscripted( self.origin, self.angles, "zm_fly_hover" );
|
self sys::animscripted( self.origin, self.angles, "zm_fly_hover" );
|
||||||
wait( level.mechz_jump_delay );
|
wait( level.mechz_jump_delay );
|
||||||
|
|
||||||
if ( isdefined( wait_for_stationary_tank ) && wait_for_stationary_tank )
|
if ( isdefined( wait_for_stationary_tank ) && wait_for_stationary_tank )
|
||||||
level.vh_tank ent_flag_waitopen( "tank_moving" );
|
level.vh_tank ent_flag_waitopen( "tank_moving" );
|
||||||
|
|
||||||
self notsolid();
|
self sys::notsolid();
|
||||||
closest_jump_point = get_best_mechz_spawn_pos( 1 );
|
closest_jump_point = get_best_mechz_spawn_pos( 1 );
|
||||||
|
|
||||||
if ( isdefined( closest_jump_point ) )
|
if ( isdefined( closest_jump_point ) )
|
||||||
@ -268,10 +268,10 @@ mechz_do_jump( wait_for_stationary_tank )
|
|||||||
if ( !isdefined( self.closest_jump_point.angles ) )
|
if ( !isdefined( self.closest_jump_point.angles ) )
|
||||||
self.closest_jump_point.angles = ( 0, 0, 0 );
|
self.closest_jump_point.angles = ( 0, 0, 0 );
|
||||||
|
|
||||||
self animscripted( self.closest_jump_point.origin, self.closest_jump_point.angles, "zm_fly_in" );
|
self sys::animscripted( self.closest_jump_point.origin, self.closest_jump_point.angles, "zm_fly_in" );
|
||||||
self solid();
|
self sys::solid();
|
||||||
self.mechz_hidden = 0;
|
self.mechz_hidden = 0;
|
||||||
self show();
|
self sys::show();
|
||||||
self.fx_field = self.fx_field_old;
|
self.fx_field = self.fx_field_old;
|
||||||
self.fx_field_old = undefined;
|
self.fx_field_old = undefined;
|
||||||
if ( level.script == "zm_tomb" )
|
if ( level.script == "zm_tomb" )
|
||||||
@ -285,11 +285,11 @@ mechz_do_jump( wait_for_stationary_tank )
|
|||||||
self thread maps\mp\zombies\_zm_spawner::zombie_eye_glow();
|
self thread maps\mp\zombies\_zm_spawner::zombie_eye_glow();
|
||||||
|
|
||||||
if ( isdefined( self.m_claw ) )
|
if ( isdefined( self.m_claw ) )
|
||||||
self.m_claw show();
|
self.m_claw sys::show();
|
||||||
|
|
||||||
self maps\mp\animscripts\zm_shared::donotetracks( "jump_anim" );
|
self maps\mp\animscripts\zm_shared::donotetracks( "jump_anim" );
|
||||||
self.not_interruptable = 0;
|
self.not_interruptable = 0;
|
||||||
self setfreecameralockonallowed( 1 );
|
self sys::setfreecameralockonallowed( 1 );
|
||||||
/#
|
/#
|
||||||
if ( getdvarint( #"_id_E7121222" ) > 1 )
|
if ( getdvarint( #"_id_E7121222" ) > 1 )
|
||||||
println( "\\nMZ: Jump clearing not interruptable\\n" );
|
println( "\\nMZ: Jump clearing not interruptable\\n" );
|
||||||
|
@ -28,7 +28,7 @@ mechz_claw_detach()
|
|||||||
if ( isdefined( self.m_claw.fx_ent ) )
|
if ( isdefined( self.m_claw.fx_ent ) )
|
||||||
self.m_claw.fx_ent delete();
|
self.m_claw.fx_ent delete();
|
||||||
|
|
||||||
self.m_claw unlink();
|
self.m_claw sys::unlink();
|
||||||
self.m_claw physicslaunch( self.m_claw.origin, ( 0, 0, -1 ) );
|
self.m_claw physicslaunch( self.m_claw.origin, ( 0, 0, -1 ) );
|
||||||
self.m_claw thread mechz_delayed_item_delete();
|
self.m_claw thread mechz_delayed_item_delete();
|
||||||
self.m_claw = undefined;
|
self.m_claw = undefined;
|
||||||
@ -36,7 +36,7 @@ mechz_claw_detach()
|
|||||||
|
|
||||||
if ( isdefined( self.m_claw_damage_trigger ) )
|
if ( isdefined( self.m_claw_damage_trigger ) )
|
||||||
{
|
{
|
||||||
self.m_claw_damage_trigger unlink();
|
self.m_claw_damage_trigger sys::unlink();
|
||||||
self.m_claw_damage_trigger delete();
|
self.m_claw_damage_trigger delete();
|
||||||
self.m_claw_damage_trigger = undefined;
|
self.m_claw_damage_trigger = undefined;
|
||||||
}
|
}
|
||||||
@ -67,7 +67,7 @@ mechz_claw_release( bopenclaw )
|
|||||||
trace_start = self.e_grabbed.origin + vectorscale( ( 0, 0, 1 ), 70.0 );
|
trace_start = self.e_grabbed.origin + vectorscale( ( 0, 0, 1 ), 70.0 );
|
||||||
trace_end = self.e_grabbed.origin + vectorscale( ( 0, 0, -1 ), 500.0 );
|
trace_end = self.e_grabbed.origin + vectorscale( ( 0, 0, -1 ), 500.0 );
|
||||||
drop_trace = playerphysicstrace( trace_start, trace_end ) + vectorscale( ( 0, 0, 1 ), 24.0 );
|
drop_trace = playerphysicstrace( trace_start, trace_end ) + vectorscale( ( 0, 0, 1 ), 24.0 );
|
||||||
self.e_grabbed unlink();
|
self.e_grabbed sys::unlink();
|
||||||
self.e_grabbed setorigin( drop_trace );
|
self.e_grabbed setorigin( drop_trace );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -81,7 +81,7 @@ mechz_claw_release( bopenclaw )
|
|||||||
mechz_claw_shot_pain_reaction()
|
mechz_claw_shot_pain_reaction()
|
||||||
{
|
{
|
||||||
self mechz_interrupt();
|
self mechz_interrupt();
|
||||||
self animscripted( self.origin, self.angles, "zm_head_pain" );
|
self sys::animscripted( self.origin, self.angles, "zm_head_pain" );
|
||||||
self maps\mp\animscripts\zm_shared::donotetracks( "head_pain_anim" );
|
self maps\mp\animscripts\zm_shared::donotetracks( "head_pain_anim" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -110,13 +110,13 @@ mechz_claw_aim( target_pos )
|
|||||||
self endon( "kill_claw" );
|
self endon( "kill_claw" );
|
||||||
self endon( "claw_complete" );
|
self endon( "claw_complete" );
|
||||||
aim_anim = mechz_get_aim_anim( "zm_grapple", target_pos );
|
aim_anim = mechz_get_aim_anim( "zm_grapple", target_pos );
|
||||||
self animscripted( self.origin, self.angles, "zm_grapple_aim_start" );
|
self sys::animscripted( self.origin, self.angles, "zm_grapple_aim_start" );
|
||||||
self thread mechz_claw_notetracks();
|
self thread mechz_claw_notetracks();
|
||||||
self maps\mp\animscripts\zm_shared::donotetracks( "grapple_anim" );
|
self maps\mp\animscripts\zm_shared::donotetracks( "grapple_anim" );
|
||||||
|
|
||||||
while ( flag( "mechz_launching_claw" ) )
|
while ( flag( "mechz_launching_claw" ) )
|
||||||
{
|
{
|
||||||
self animscripted( self.origin, self.angles, aim_anim );
|
self sys::animscripted( self.origin, self.angles, aim_anim );
|
||||||
self maps\mp\animscripts\zm_shared::donotetracks( "grapple_anim" );
|
self maps\mp\animscripts\zm_shared::donotetracks( "grapple_anim" );
|
||||||
self clearanim( %root, 0.0 );
|
self clearanim( %root, 0.0 );
|
||||||
}
|
}
|
||||||
@ -169,7 +169,7 @@ claw_grapple()
|
|||||||
if ( !isdefined( self.favoriteenemy ) )
|
if ( !isdefined( self.favoriteenemy ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
v_claw_origin = self gettagorigin( "tag_claw" );
|
v_claw_origin = self sys::gettagorigin( "tag_claw" );
|
||||||
v_claw_angles = vectortoangles( self.origin - self.favoriteenemy.origin );
|
v_claw_angles = vectortoangles( self.origin - self.favoriteenemy.origin );
|
||||||
self.fx_field = self.fx_field | 256;
|
self.fx_field = self.fx_field | 256;
|
||||||
if ( level.script == "zm_tomb" )
|
if ( level.script == "zm_tomb" )
|
||||||
@ -181,11 +181,11 @@ claw_grapple()
|
|||||||
set_clientfield_alt_allplayers( "mechz_fx", self, self.fx_field );
|
set_clientfield_alt_allplayers( "mechz_fx", self, self.fx_field );
|
||||||
}
|
}
|
||||||
self.m_claw setanim( %ai_zombie_mech_grapple_arm_open_idle, 1, 0, 1 );
|
self.m_claw setanim( %ai_zombie_mech_grapple_arm_open_idle, 1, 0, 1 );
|
||||||
self.m_claw unlink();
|
self.m_claw sys::unlink();
|
||||||
self.m_claw.fx_ent = spawn( "script_model", self.m_claw gettagorigin( "tag_claw" ) );
|
self.m_claw.fx_ent = sys::spawn( "script_model", self.m_claw sys::gettagorigin( "tag_claw" ) );
|
||||||
self.m_claw.fx_ent.angles = self.m_claw gettagangles( "tag_claw" );
|
self.m_claw.fx_ent.angles = self.m_claw sys::gettagangles( "tag_claw" );
|
||||||
self.m_claw.fx_ent setmodel( "tag_origin" );
|
self.m_claw.fx_ent setmodel( "tag_origin" );
|
||||||
self.m_claw.fx_ent linkto( self.m_claw, "tag_claw" );
|
self.m_claw.fx_ent sys::linkto( self.m_claw, "tag_claw" );
|
||||||
network_safe_play_fx_on_tag( "mech_claw", 1, level._effect["mechz_claw"], self.m_claw.fx_ent, "tag_origin" );
|
network_safe_play_fx_on_tag( "mech_claw", 1, level._effect["mechz_claw"], self.m_claw.fx_ent, "tag_origin" );
|
||||||
v_enemy_origin = self.favoriteenemy.origin + vectorscale( ( 0, 0, 1 ), 36.0 );
|
v_enemy_origin = self.favoriteenemy.origin + vectorscale( ( 0, 0, 1 ), 36.0 );
|
||||||
n_dist = distance( v_claw_origin, v_enemy_origin );
|
n_dist = distance( v_claw_origin, v_enemy_origin );
|
||||||
@ -198,21 +198,21 @@ claw_grapple()
|
|||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
a_players = getplayers();
|
a_players = sys::getplayers();
|
||||||
|
|
||||||
foreach ( player in a_players )
|
foreach ( player in a_players )
|
||||||
{
|
{
|
||||||
if ( !is_player_valid( player, 1, 1 ) || !player player_can_be_grabbed() )
|
if ( !is_player_valid( player, 1, 1 ) || !player player_can_be_grabbed() )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
n_dist_sq = distancesquared( player.origin + vectorscale( ( 0, 0, 1 ), 36.0 ), self.m_claw.origin );
|
n_dist_sq = sys::distancesquared( player.origin + vectorscale( ( 0, 0, 1 ), 36.0 ), self.m_claw.origin );
|
||||||
|
|
||||||
if ( n_dist_sq < 2304 )
|
if ( n_dist_sq < 2304 )
|
||||||
{
|
{
|
||||||
if ( isdefined( player.hasriotshield ) && player.hasriotshield && player getcurrentweapon() == level.riotshield_name )
|
if ( isdefined( player.hasriotshield ) && player.hasriotshield && player getcurrentweapon() == level.riotshield_name )
|
||||||
{
|
{
|
||||||
shield_dmg = level.zombie_vars["riotshield_hit_points"];
|
shield_dmg = level.zombie_vars["riotshield_hit_points"];
|
||||||
func = getFunction( "maps/mp/zombies/_zm_weap_riotshield_tomb", "player_damage_shield" );
|
func = pluto_sys::getfunction( "maps/mp/zombies/_zm_weap_riotshield_tomb", "player_damage_shield" );
|
||||||
if ( isDefined( func ) )
|
if ( isDefined( func ) )
|
||||||
{
|
{
|
||||||
player [[ func ]]( shield_dmg - 1, 1 );
|
player [[ func ]]( shield_dmg - 1, 1 );
|
||||||
@ -235,7 +235,7 @@ claw_grapple()
|
|||||||
{
|
{
|
||||||
self.e_grabbed set_clientfield_alt_toplayer( "mechz_grab", self.e_grabbed, 1 );
|
self.e_grabbed set_clientfield_alt_toplayer( "mechz_grab", self.e_grabbed, 1 );
|
||||||
}
|
}
|
||||||
self.e_grabbed playerlinktodelta( self.m_claw, "tag_attach_player" );
|
self.e_grabbed playersys::linktodelta( self.m_claw, "tag_attach_player" );
|
||||||
self.e_grabbed setplayerangles( vectortoangles( self.origin - self.e_grabbed.origin ) );
|
self.e_grabbed setplayerangles( vectortoangles( self.origin - self.e_grabbed.origin ) );
|
||||||
self.e_grabbed playsound( "zmb_ai_mechz_claw_grab" );
|
self.e_grabbed playsound( "zmb_ai_mechz_claw_grab" );
|
||||||
self.e_grabbed setstance( "stand" );
|
self.e_grabbed setstance( "stand" );
|
||||||
@ -264,14 +264,14 @@ claw_grapple()
|
|||||||
if ( !isalive( ai_zombie ) || isdefined( ai_zombie.is_giant_robot ) && ai_zombie.is_giant_robot || isdefined( ai_zombie.is_mechz ) && ai_zombie.is_mechz )
|
if ( !isalive( ai_zombie ) || isdefined( ai_zombie.is_giant_robot ) && ai_zombie.is_giant_robot || isdefined( ai_zombie.is_mechz ) && ai_zombie.is_mechz )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
n_dist_sq = distancesquared( ai_zombie.origin + vectorscale( ( 0, 0, 1 ), 36.0 ), self.m_claw.origin );
|
n_dist_sq = sys::distancesquared( ai_zombie.origin + vectorscale( ( 0, 0, 1 ), 36.0 ), self.m_claw.origin );
|
||||||
|
|
||||||
if ( n_dist_sq < 2304 )
|
if ( n_dist_sq < 2304 )
|
||||||
{
|
{
|
||||||
self.e_grabbed = ai_zombie;
|
self.e_grabbed = ai_zombie;
|
||||||
self.e_grabbed linkto( self.m_claw, "tag_attach_player", ( 0, 0, 0 ) );
|
self.e_grabbed sys::linkto( self.m_claw, "tag_attach_player", ( 0, 0, 0 ) );
|
||||||
self.e_grabbed.mechz_grabbed_by = self;
|
self.e_grabbed.mechz_grabbed_by = self;
|
||||||
self.e_grabbed animcustom( ::zombie_grabbed_by_mechz_claw );
|
self.e_grabbed sys::animcustom( ::zombie_grabbed_by_mechz_claw );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -287,13 +287,13 @@ claw_grapple()
|
|||||||
n_time = n_dist / 1000;
|
n_time = n_dist / 1000;
|
||||||
|
|
||||||
self mechz_claw_explosive_watcher();
|
self mechz_claw_explosive_watcher();
|
||||||
v_claw_origin = self gettagorigin( "tag_claw" );
|
v_claw_origin = self sys::gettagorigin( "tag_claw" );
|
||||||
v_claw_angles = self gettagangles( "tag_claw" );
|
v_claw_angles = self sys::gettagangles( "tag_claw" );
|
||||||
self.m_claw moveto( v_claw_origin, max( 0.05, n_time ) );
|
self.m_claw moveto( v_claw_origin, max( 0.05, n_time ) );
|
||||||
self.m_claw playloopsound( "zmb_ai_mechz_claw_loop_in", 0.1 );
|
self.m_claw playloopsound( "zmb_ai_mechz_claw_loop_in", 0.1 );
|
||||||
self.m_claw waittill( "movedone" );
|
self.m_claw waittill( "movedone" );
|
||||||
v_claw_origin = self gettagorigin( "tag_claw" );
|
v_claw_origin = self sys::gettagorigin( "tag_claw" );
|
||||||
v_claw_angles = self gettagangles( "tag_claw" );
|
v_claw_angles = self sys::gettagangles( "tag_claw" );
|
||||||
self.m_claw playsound( "zmb_ai_mechz_claw_back" );
|
self.m_claw playsound( "zmb_ai_mechz_claw_back" );
|
||||||
self.m_claw stoploopsound( 1 );
|
self.m_claw stoploopsound( 1 );
|
||||||
|
|
||||||
@ -303,7 +303,7 @@ claw_grapple()
|
|||||||
self.m_claw.origin = v_claw_origin;
|
self.m_claw.origin = v_claw_origin;
|
||||||
self.m_claw.angles = v_claw_angles;
|
self.m_claw.angles = v_claw_angles;
|
||||||
self.m_claw clearanim( %root, 0.2 );
|
self.m_claw clearanim( %root, 0.2 );
|
||||||
self.m_claw linkto( self, "tag_claw", ( 0, 0, 0 ) );
|
self.m_claw sys::linkto( self, "tag_claw", ( 0, 0, 0 ) );
|
||||||
self.m_claw setanim( %ai_zombie_mech_grapple_arm_closed_idle, 1, 0.2, 1 );
|
self.m_claw setanim( %ai_zombie_mech_grapple_arm_closed_idle, 1, 0.2, 1 );
|
||||||
self.m_claw.fx_ent delete();
|
self.m_claw.fx_ent delete();
|
||||||
self.m_claw.fx_ent = undefined;
|
self.m_claw.fx_ent = undefined;
|
||||||
@ -329,7 +329,7 @@ claw_grapple()
|
|||||||
self.e_grabbed thread mechz_zombie_flamethrower_gib( self );
|
self.e_grabbed thread mechz_zombie_flamethrower_gib( self );
|
||||||
|
|
||||||
self thread check_for_claw_damaged( self.e_grabbed );
|
self thread check_for_claw_damaged( self.e_grabbed );
|
||||||
self animscripted( self.origin, self.angles, "zm_flamethrower_claw_victim" );
|
self sys::animscripted( self.origin, self.angles, "zm_flamethrower_claw_victim" );
|
||||||
self maps\mp\animscripts\zm_shared::donotetracks( "flamethrower_anim" );
|
self maps\mp\animscripts\zm_shared::donotetracks( "flamethrower_anim" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -339,7 +339,7 @@ claw_grapple()
|
|||||||
zombie_grabbed_by_mechz_claw()
|
zombie_grabbed_by_mechz_claw()
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon( "death" );
|
||||||
self setanimstatefromasd( "zm_grabbed_by_mech" );
|
self sys::setanimstatefromasd( "zm_grabbed_by_mech" );
|
||||||
self.mechz_grabbed_by waittill_any( "death", "claw_complete", "kill_claw" );
|
self.mechz_grabbed_by waittill_any( "death", "claw_complete", "kill_claw" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -397,14 +397,14 @@ check_for_players_mid_grapple()
|
|||||||
|
|
||||||
while ( true )
|
while ( true )
|
||||||
{
|
{
|
||||||
a_players = getplayers();
|
a_players = sys::getplayers();
|
||||||
|
|
||||||
foreach ( player in a_players )
|
foreach ( player in a_players )
|
||||||
{
|
{
|
||||||
if ( !is_player_valid( player, 1, 1 ) || !player player_can_be_grabbed() )
|
if ( !is_player_valid( player, 1, 1 ) || !player player_can_be_grabbed() )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
n_dist_sq = distancesquared( player.origin + vectorscale( ( 0, 0, 1 ), 36.0 ), self.origin );
|
n_dist_sq = sys::distancesquared( player.origin + vectorscale( ( 0, 0, 1 ), 36.0 ), self.origin );
|
||||||
|
|
||||||
if ( n_dist_sq < 2304 )
|
if ( n_dist_sq < 2304 )
|
||||||
{
|
{
|
||||||
@ -436,7 +436,7 @@ zombie_gib_all()
|
|||||||
a_gib_ref = [];
|
a_gib_ref = [];
|
||||||
a_gib_ref[0] = level._zombie_gib_piece_index_all;
|
a_gib_ref[0] = level._zombie_gib_piece_index_all;
|
||||||
self gib( "normal", a_gib_ref );
|
self gib( "normal", a_gib_ref );
|
||||||
self ghost();
|
self sys::ghost();
|
||||||
wait 0.4;
|
wait 0.4;
|
||||||
|
|
||||||
if ( isdefined( self ) )
|
if ( isdefined( self ) )
|
||||||
@ -489,7 +489,7 @@ should_do_claw_attack()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( self.last_claw_time ) && gettime() - self.last_claw_time < level.mechz_claw_cooldown_time )
|
if ( isdefined( self.last_claw_time ) && sys::gettime() - self.last_claw_time < level.mechz_claw_cooldown_time )
|
||||||
{
|
{
|
||||||
/#
|
/#
|
||||||
if ( getdvarint( #"_id_E7121222" ) > 1 )
|
if ( getdvarint( #"_id_E7121222" ) > 1 )
|
||||||
@ -507,7 +507,7 @@ should_do_claw_attack()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
n_dist_sq = distancesquared( self.origin, self.favoriteenemy.origin );
|
n_dist_sq = sys::distancesquared( self.origin, self.favoriteenemy.origin );
|
||||||
|
|
||||||
if ( n_dist_sq < 90000 || n_dist_sq > 1000000 )
|
if ( n_dist_sq < 90000 || n_dist_sq > 1000000 )
|
||||||
{
|
{
|
||||||
@ -565,13 +565,13 @@ mechz_do_claw_grab()
|
|||||||
#/
|
#/
|
||||||
assert( isdefined( self.favoriteenemy ) );
|
assert( isdefined( self.favoriteenemy ) );
|
||||||
self thread mechz_kill_claw_watcher();
|
self thread mechz_kill_claw_watcher();
|
||||||
self.last_claw_time = gettime();
|
self.last_claw_time = sys::gettime();
|
||||||
target_pos = self.favoriteenemy.origin + vectorscale( ( 0, 0, 1 ), 30.0 );
|
target_pos = self.favoriteenemy.origin + vectorscale( ( 0, 0, 1 ), 30.0 );
|
||||||
self thread mechz_stop_basic_find_flesh();
|
self thread mechz_stop_basic_find_flesh();
|
||||||
self.ai_state = "grapple_attempt";
|
self.ai_state = "grapple_attempt";
|
||||||
flag_set( "mechz_launching_claw" );
|
flag_set( "mechz_launching_claw" );
|
||||||
self thread mechz_claw_aim( target_pos );
|
self thread mechz_claw_aim( target_pos );
|
||||||
self orientmode( "face enemy" );
|
self sys::orientmode( "face enemy" );
|
||||||
self waittillmatch( "grapple_anim", "muzzleflash" );
|
self waittillmatch( "grapple_anim", "muzzleflash" );
|
||||||
self claw_grapple();
|
self claw_grapple();
|
||||||
self mechz_claw_cleanup();
|
self mechz_claw_cleanup();
|
||||||
@ -617,21 +617,21 @@ mechz_claw_cleanup()
|
|||||||
{
|
{
|
||||||
if ( !self.m_claw islinkedto( self ) )
|
if ( !self.m_claw islinkedto( self ) )
|
||||||
{
|
{
|
||||||
v_claw_origin = self gettagorigin( "tag_claw" );
|
v_claw_origin = self sys::gettagorigin( "tag_claw" );
|
||||||
v_claw_angles = self gettagangles( "tag_claw" );
|
v_claw_angles = self sys::gettagangles( "tag_claw" );
|
||||||
n_dist = distance( self.m_claw.origin, v_claw_origin );
|
n_dist = distance( self.m_claw.origin, v_claw_origin );
|
||||||
n_time = n_dist / 1000;
|
n_time = n_dist / 1000;
|
||||||
self.m_claw moveto( v_claw_origin, max( 0.05, n_time ) );
|
self.m_claw moveto( v_claw_origin, max( 0.05, n_time ) );
|
||||||
self.m_claw playloopsound( "zmb_ai_mechz_claw_loop_in", 0.1 );
|
self.m_claw playloopsound( "zmb_ai_mechz_claw_loop_in", 0.1 );
|
||||||
self.m_claw waittill( "movedone" );
|
self.m_claw waittill( "movedone" );
|
||||||
v_claw_origin = self gettagorigin( "tag_claw" );
|
v_claw_origin = self sys::gettagorigin( "tag_claw" );
|
||||||
v_claw_angles = self gettagangles( "tag_claw" );
|
v_claw_angles = self sys::gettagangles( "tag_claw" );
|
||||||
self.m_claw playsound( "zmb_ai_mechz_claw_back" );
|
self.m_claw playsound( "zmb_ai_mechz_claw_back" );
|
||||||
self.m_claw stoploopsound( 1 );
|
self.m_claw stoploopsound( 1 );
|
||||||
self.m_claw.origin = v_claw_origin;
|
self.m_claw.origin = v_claw_origin;
|
||||||
self.m_claw.angles = v_claw_angles;
|
self.m_claw.angles = v_claw_angles;
|
||||||
self.m_claw clearanim( %root, 0.2 );
|
self.m_claw clearanim( %root, 0.2 );
|
||||||
self.m_claw linkto( self, "tag_claw", ( 0, 0, 0 ) );
|
self.m_claw sys::linkto( self, "tag_claw", ( 0, 0, 0 ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
self.m_claw setanim( %ai_zombie_mech_grapple_arm_closed_idle, 1, 0.2, 1 );
|
self.m_claw setanim( %ai_zombie_mech_grapple_arm_closed_idle, 1, 0.2, 1 );
|
||||||
|
@ -19,7 +19,7 @@ mechz_debug()
|
|||||||
{
|
{
|
||||||
if ( debug_level == 1 )
|
if ( debug_level == 1 )
|
||||||
{
|
{
|
||||||
mechz_array = getentarray( "mechz_zombie_ai" );
|
mechz_array = sys::getentarray( "mechz_zombie_ai" );
|
||||||
|
|
||||||
for ( i = 0; i < mechz_array.size; i++ )
|
for ( i = 0; i < mechz_array.size; i++ )
|
||||||
{
|
{
|
||||||
@ -127,7 +127,7 @@ watch_devgui_mechz()
|
|||||||
mechz mechz_stop_basic_find_flesh();
|
mechz mechz_stop_basic_find_flesh();
|
||||||
mechz.ai_state = "devgui";
|
mechz.ai_state = "devgui";
|
||||||
mechz.goal_pos = ( 446, -4318, 200 );
|
mechz.goal_pos = ( 446, -4318, 200 );
|
||||||
mechz setgoalpos( mechz.goal_pos );
|
mechz sys::setgoalpos( mechz.goal_pos );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( getdvar( #"_id_6CF3EB40" ) == "on" )
|
if ( getdvar( #"_id_6CF3EB40" ) == "on" )
|
||||||
@ -149,7 +149,7 @@ watch_devgui_mechz()
|
|||||||
mechz mechz_stop_basic_find_flesh();
|
mechz mechz_stop_basic_find_flesh();
|
||||||
mechz.ai_state = "devgui";
|
mechz.ai_state = "devgui";
|
||||||
mechz.goal_pos = ( 1657, -336, 92 );
|
mechz.goal_pos = ( 1657, -336, 92 );
|
||||||
mechz setgoalpos( mechz.goal_pos );
|
mechz sys::setgoalpos( mechz.goal_pos );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( getdvar( #"_id_0DE1409A" ) == "on" )
|
if ( getdvar( #"_id_0DE1409A" ) == "on" )
|
||||||
@ -233,18 +233,18 @@ setup_force_behavior()
|
|||||||
/#
|
/#
|
||||||
if ( !isdefined( level.test_align_struct ) )
|
if ( !isdefined( level.test_align_struct ) )
|
||||||
{
|
{
|
||||||
player = get_players()[0];
|
player = sys::getplayers()[0];
|
||||||
pos = player.origin;
|
pos = player.origin;
|
||||||
offset = anglestoforward( player.angles );
|
offset = anglestoforward( player.angles );
|
||||||
offset = vectornormalize( offset );
|
offset = sys::vectornormalize( offset );
|
||||||
level.test_align_struct = spawn( "script_model", pos + 300 * offset );
|
level.test_align_struct = sys::spawn( "script_model", pos + 300 * offset );
|
||||||
level.test_align_struct setmodel( "tag_origin" );
|
level.test_align_struct setmodel( "tag_origin" );
|
||||||
level.test_align_struct.angles = player.angles + vectorscale( ( 0, 1, 0 ), 180.0 );
|
level.test_align_struct.angles = player.angles + vectorscale( ( 0, 1, 0 ), 180.0 );
|
||||||
level.test_align_struct thread align_test_struct();
|
level.test_align_struct thread align_test_struct();
|
||||||
level.test_align_struct.angles = player.angles + vectorscale( ( 0, 1, 0 ), 180.0 );
|
level.test_align_struct.angles = player.angles + vectorscale( ( 0, 1, 0 ), 180.0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
self linkto( level.test_align_struct, "tag_origin", ( 0, 0, 0 ), ( 0, 0, 0 ) );
|
self sys::linkto( level.test_align_struct, "tag_origin", ( 0, 0, 0 ), ( 0, 0, 0 ) );
|
||||||
self.fx_field = self.fx_field & ~64;
|
self.fx_field = self.fx_field & ~64;
|
||||||
self.fx_field = self.fx_field & ~128;
|
self.fx_field = self.fx_field & ~128;
|
||||||
self.fx_field = self.fx_field & ~256;
|
self.fx_field = self.fx_field & ~256;
|
||||||
@ -258,7 +258,7 @@ align_test_struct()
|
|||||||
{
|
{
|
||||||
pos = level.players[0].origin;
|
pos = level.players[0].origin;
|
||||||
offset = anglestoforward( level.players[0].angles );
|
offset = anglestoforward( level.players[0].angles );
|
||||||
offset = vectornormalize( offset );
|
offset = sys::vectornormalize( offset );
|
||||||
dist = getdvarint( #"_id_6DCD047E" );
|
dist = getdvarint( #"_id_6DCD047E" );
|
||||||
level.test_align_struct.origin = pos + dist * offset;
|
level.test_align_struct.origin = pos + dist * offset;
|
||||||
level.test_align_struct.angles = get_behavior_orient();
|
level.test_align_struct.angles = get_behavior_orient();
|
||||||
@ -270,7 +270,7 @@ align_test_struct()
|
|||||||
scripted_behavior( anim_scripted_name, notify_name )
|
scripted_behavior( anim_scripted_name, notify_name )
|
||||||
{
|
{
|
||||||
/#
|
/#
|
||||||
self animscripted( level.test_align_struct.origin, level.test_align_struct.angles, anim_scripted_name );
|
self sys::animscripted( level.test_align_struct.origin, level.test_align_struct.angles, anim_scripted_name );
|
||||||
self maps\mp\animscripts\zm_shared::donotetracks( notify_name );
|
self maps\mp\animscripts\zm_shared::donotetracks( notify_name );
|
||||||
#/
|
#/
|
||||||
}
|
}
|
||||||
@ -283,7 +283,7 @@ mechz_force_jump_in()
|
|||||||
|
|
||||||
while ( true )
|
while ( true )
|
||||||
{
|
{
|
||||||
self animscripted( self.origin, self.angles, "zm_idle" );
|
self sys::animscripted( self.origin, self.angles, "zm_idle" );
|
||||||
wait 0.2;
|
wait 0.2;
|
||||||
self scripted_behavior( "zm_spawn", "jump_anim" );
|
self scripted_behavior( "zm_spawn", "jump_anim" );
|
||||||
}
|
}
|
||||||
@ -298,13 +298,13 @@ mechz_force_jump_out()
|
|||||||
|
|
||||||
while ( true )
|
while ( true )
|
||||||
{
|
{
|
||||||
self animscripted( self.origin, self.angles, "zm_idle" );
|
self sys::animscripted( self.origin, self.angles, "zm_idle" );
|
||||||
wait 0.2;
|
wait 0.2;
|
||||||
self scripted_behavior( "zm_fly_out", "jump_anim" );
|
self scripted_behavior( "zm_fly_out", "jump_anim" );
|
||||||
self ghost();
|
self sys::ghost();
|
||||||
self animscripted( self.origin, self.angles, "zm_fly_hover" );
|
self sys::animscripted( self.origin, self.angles, "zm_fly_hover" );
|
||||||
wait( level.mechz_jump_delay );
|
wait( level.mechz_jump_delay );
|
||||||
self show();
|
self sys::show();
|
||||||
self scripted_behavior( "zm_fly_in", "jump_anim" );
|
self scripted_behavior( "zm_fly_in", "jump_anim" );
|
||||||
}
|
}
|
||||||
#/
|
#/
|
||||||
@ -319,7 +319,7 @@ mechz_force_flamethrower()
|
|||||||
self setup_force_behavior();
|
self setup_force_behavior();
|
||||||
curr_aim_anim = 1;
|
curr_aim_anim = 1;
|
||||||
curr_timer = 0;
|
curr_timer = 0;
|
||||||
self animscripted( self.origin, self.angles, "zm_idle" );
|
self sys::animscripted( self.origin, self.angles, "zm_idle" );
|
||||||
wait 0.2;
|
wait 0.2;
|
||||||
self scripted_behavior( "zm_flamethrower_aim_start", "flamethrower_anim" );
|
self scripted_behavior( "zm_flamethrower_aim_start", "flamethrower_anim" );
|
||||||
|
|
||||||
@ -357,21 +357,21 @@ fake_launch_claw()
|
|||||||
{
|
{
|
||||||
/#
|
/#
|
||||||
self.launching_claw = 1;
|
self.launching_claw = 1;
|
||||||
v_claw_origin = self gettagorigin( "tag_claw" );
|
v_claw_origin = self sys::gettagorigin( "tag_claw" );
|
||||||
v_claw_angles = vectortoangles( self.origin - level.players[0].origin );
|
v_claw_angles = vectortoangles( self.origin - level.players[0].origin );
|
||||||
self.fx_field = self.fx_field | 256;
|
self.fx_field = self.fx_field | 256;
|
||||||
self setclientfield( "mechz_fx", self.fx_field );
|
self setclientfield( "mechz_fx", self.fx_field );
|
||||||
self.m_claw setanim( %ai_zombie_mech_grapple_arm_open_idle, 1, 0, 1 );
|
self.m_claw setanim( %ai_zombie_mech_grapple_arm_open_idle, 1, 0, 1 );
|
||||||
self.m_claw unlink();
|
self.m_claw sys::unlink();
|
||||||
self.m_claw.fx_ent = spawn( "script_model", self.m_claw gettagorigin( "tag_claw" ) );
|
self.m_claw.fx_ent = sys::spawn( "script_model", self.m_claw sys::gettagorigin( "tag_claw" ) );
|
||||||
self.m_claw.fx_ent.angles = self.m_claw gettagangles( "tag_claw" );
|
self.m_claw.fx_ent.angles = self.m_claw sys::gettagangles( "tag_claw" );
|
||||||
self.m_claw.fx_ent setmodel( "tag_origin" );
|
self.m_claw.fx_ent setmodel( "tag_origin" );
|
||||||
self.m_claw.fx_ent linkto( self.m_claw, "tag_claw" );
|
self.m_claw.fx_ent sys::linkto( self.m_claw, "tag_claw" );
|
||||||
network_safe_play_fx_on_tag( "mech_claw", 1, level._effect["mechz_claw"], self.m_claw.fx_ent, "tag_origin" );
|
network_safe_play_fx_on_tag( "mech_claw", 1, level._effect["mechz_claw"], self.m_claw.fx_ent, "tag_origin" );
|
||||||
self.m_claw clearanim( %root, 0.2 );
|
self.m_claw clearanim( %root, 0.2 );
|
||||||
self.m_claw setanim( %ai_zombie_mech_grapple_arm_open_idle, 1, 0.2, 1 );
|
self.m_claw setanim( %ai_zombie_mech_grapple_arm_open_idle, 1, 0.2, 1 );
|
||||||
offset = anglestoforward( self.angles );
|
offset = anglestoforward( self.angles );
|
||||||
offset = vectornormalize( offset );
|
offset = sys::vectornormalize( offset );
|
||||||
target_pos = self.origin + offset * 500 + vectorscale( ( 0, 0, 1 ), 36.0 );
|
target_pos = self.origin + offset * 500 + vectorscale( ( 0, 0, 1 ), 36.0 );
|
||||||
n_time = 0.0833333;
|
n_time = 0.0833333;
|
||||||
self.m_claw moveto( target_pos, n_time );
|
self.m_claw moveto( target_pos, n_time );
|
||||||
@ -384,11 +384,11 @@ fake_launch_claw()
|
|||||||
self.m_claw.fx_ent delete();
|
self.m_claw.fx_ent delete();
|
||||||
self.fx_field = self.fx_field & ~256;
|
self.fx_field = self.fx_field & ~256;
|
||||||
self setclientfield( "mechz_fx", self.fx_field );
|
self setclientfield( "mechz_fx", self.fx_field );
|
||||||
v_claw_origin = self gettagorigin( "tag_claw" );
|
v_claw_origin = self sys::gettagorigin( "tag_claw" );
|
||||||
v_claw_angles = self gettagangles( "tag_claw" );
|
v_claw_angles = self sys::gettagangles( "tag_claw" );
|
||||||
self.m_claw.origin = v_claw_origin;
|
self.m_claw.origin = v_claw_origin;
|
||||||
self.m_claw.angles = v_claw_angles;
|
self.m_claw.angles = v_claw_angles;
|
||||||
self.m_claw linkto( self, "tag_claw" );
|
self.m_claw sys::linkto( self, "tag_claw" );
|
||||||
self.launching_claw = 0;
|
self.launching_claw = 0;
|
||||||
#/
|
#/
|
||||||
}
|
}
|
||||||
@ -401,7 +401,7 @@ mechz_force_claw_attack()
|
|||||||
|
|
||||||
while ( true )
|
while ( true )
|
||||||
{
|
{
|
||||||
self animscripted( self.origin, self.angles, "zm_idle" );
|
self sys::animscripted( self.origin, self.angles, "zm_idle" );
|
||||||
wait 0.2;
|
wait 0.2;
|
||||||
self scripted_behavior( "zm_grapple_aim_start", "grapple_anim" );
|
self scripted_behavior( "zm_grapple_aim_start", "grapple_anim" );
|
||||||
self thread fake_launch_claw();
|
self thread fake_launch_claw();
|
||||||
@ -495,7 +495,7 @@ mechz_force_melee()
|
|||||||
|
|
||||||
while ( true )
|
while ( true )
|
||||||
{
|
{
|
||||||
self animscripted( self.origin, self.angles, "zm_idle" );
|
self sys::animscripted( self.origin, self.angles, "zm_idle" );
|
||||||
wait 0.2;
|
wait 0.2;
|
||||||
self scripted_behavior( "zm_melee_stand", "melee_anim" );
|
self scripted_behavior( "zm_melee_stand", "melee_anim" );
|
||||||
}
|
}
|
||||||
|
@ -21,11 +21,11 @@ init_flamethrower_triggers()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
flag_wait( "initial_players_connected" );
|
flag_wait( "initial_players_connected" );
|
||||||
level.flamethrower_trigger_array = getentarray( "flamethrower_trigger", "script_noteworthy" );
|
level.flamethrower_trigger_array = sys::getentarray( "flamethrower_trigger", "script_noteworthy" );
|
||||||
assert( isdefined( level.flamethrower_trigger_array ) && level.flamethrower_trigger_array.size >= 4 );
|
assert( isdefined( level.flamethrower_trigger_array ) && level.flamethrower_trigger_array.size >= 4 );
|
||||||
|
|
||||||
for ( i = 0; i < level.flamethrower_trigger_array.size; i++ )
|
for ( i = 0; i < level.flamethrower_trigger_array.size; i++ )
|
||||||
level.flamethrower_trigger_array[i] enablelinkto();
|
level.flamethrower_trigger_array[i] enablesys::linkto();
|
||||||
}
|
}
|
||||||
|
|
||||||
mechz_flamethrower_initial_setup()
|
mechz_flamethrower_initial_setup()
|
||||||
@ -47,9 +47,9 @@ mechz_flamethrower_initial_setup()
|
|||||||
|
|
||||||
if ( getDvar( "mapname" ) == "zm_tomb" )
|
if ( getDvar( "mapname" ) == "zm_tomb" )
|
||||||
{
|
{
|
||||||
self.flamethrower_trigger.origin = self gettagorigin( "tag_flamethrower_FX" );
|
self.flamethrower_trigger.origin = self sys::gettagorigin( "tag_flamethrower_FX" );
|
||||||
self.flamethrower_trigger.angles = self gettagangles( "tag_flamethrower_FX" );
|
self.flamethrower_trigger.angles = self sys::gettagangles( "tag_flamethrower_FX" );
|
||||||
self.flamethrower_trigger linkto( self, "tag_flamethrower_FX" );
|
self.flamethrower_trigger sys::linkto( self, "tag_flamethrower_FX" );
|
||||||
}
|
}
|
||||||
|
|
||||||
self thread mechz_watch_for_flamethrower_damage();
|
self thread mechz_watch_for_flamethrower_damage();
|
||||||
@ -80,7 +80,7 @@ release_flamethrower_trigger()
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
self.flamethrower_trigger.in_use = 0;
|
self.flamethrower_trigger.in_use = 0;
|
||||||
self.flamethrower_trigger unlink();
|
self.flamethrower_trigger sys::unlink();
|
||||||
self.flamethrower_trigger.origin = self.flamethrower_trigger.original_position;
|
self.flamethrower_trigger.origin = self.flamethrower_trigger.original_position;
|
||||||
self.flamethrower_linked = 0;
|
self.flamethrower_linked = 0;
|
||||||
self.flamethrower_trigger = undefined;
|
self.flamethrower_trigger = undefined;
|
||||||
@ -93,7 +93,7 @@ mechz_flamethrower_dist_watcher()
|
|||||||
|
|
||||||
while ( true )
|
while ( true )
|
||||||
{
|
{
|
||||||
if ( !isdefined( self.favoriteenemy ) || !is_player_valid( self.favoriteenemy, 1, 1 ) || distancesquared( self.origin, self.favoriteenemy.origin ) > 50000 )
|
if ( !isdefined( self.favoriteenemy ) || !is_player_valid( self.favoriteenemy, 1, 1 ) || sys::distancesquared( self.origin, self.favoriteenemy.origin ) > 50000 )
|
||||||
{
|
{
|
||||||
self notify( "stop_ft" );
|
self notify( "stop_ft" );
|
||||||
return;
|
return;
|
||||||
@ -139,7 +139,7 @@ mechz_play_flamethrower_aim()
|
|||||||
if ( isdefined( self.curr_aim_anim ) )
|
if ( isdefined( self.curr_aim_anim ) )
|
||||||
{
|
{
|
||||||
self stopanimscripted();
|
self stopanimscripted();
|
||||||
self animscripted( self.origin, self.angles, self.curr_aim_anim );
|
self sys::animscripted( self.origin, self.angles, self.curr_aim_anim );
|
||||||
self maps\mp\animscripts\zm_shared::donotetracks( "flamethrower_anim" );
|
self maps\mp\animscripts\zm_shared::donotetracks( "flamethrower_anim" );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -170,13 +170,13 @@ mechz_flamethrower_tank_sweep()
|
|||||||
{
|
{
|
||||||
self stopanimscripted();
|
self stopanimscripted();
|
||||||
self.angles = vectortoangles( level.vh_tank.origin - self.origin );
|
self.angles = vectortoangles( level.vh_tank.origin - self.origin );
|
||||||
self animscripted( self.origin, self.angles, "zm_flamethrower_sweep_up" );
|
self sys::animscripted( self.origin, self.angles, "zm_flamethrower_sweep_up" );
|
||||||
self maps\mp\animscripts\zm_shared::donotetracks( "flamethrower_anim" );
|
self maps\mp\animscripts\zm_shared::donotetracks( "flamethrower_anim" );
|
||||||
|
|
||||||
if ( level.vh_tank ent_flag( "tank_moving" ) )
|
if ( level.vh_tank ent_flag( "tank_moving" ) )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
func = getFunction( "maps/mp/zm_tomb_tank", "get_players_on_tank" );
|
func = pluto_sys::getfunction( "maps/mp/zm_tomb_tank", "get_players_on_tank" );
|
||||||
if ( isDefined( func ) )
|
if ( isDefined( func ) )
|
||||||
{
|
{
|
||||||
a_players_on_tank = [[ func ]]( 1 );
|
a_players_on_tank = [[ func ]]( 1 );
|
||||||
@ -207,9 +207,9 @@ hit_by_flamethrower( mechz )
|
|||||||
{
|
{
|
||||||
dist = distance(self.origin, mechz.origin);
|
dist = distance(self.origin, mechz.origin);
|
||||||
dirTo = self.origin - mechz.flamethrower_fx.origin;
|
dirTo = self.origin - mechz.flamethrower_fx.origin;
|
||||||
dirTo = vectornormalize(dirTo);
|
dirTo = sys::vectornormalize(dirTo);
|
||||||
mechDir = anglestoforward(mechz.flamethrower_fx.angles + (180,0,0));
|
mechDir = anglestoforward(mechz.flamethrower_fx.angles + (180,0,0));
|
||||||
dot = vectordot(dirTo, mechDir);
|
dot = sys::vectordot(dirTo, mechDir);
|
||||||
|
|
||||||
if ( isDefined( self.is_zombie ) && self.is_zombie )
|
if ( isDefined( self.is_zombie ) && self.is_zombie )
|
||||||
{
|
{
|
||||||
@ -228,17 +228,17 @@ hit_by_flamethrower( mechz )
|
|||||||
|
|
||||||
mech_flamethrower_fx()
|
mech_flamethrower_fx()
|
||||||
{
|
{
|
||||||
self.flamethrower_fx = spawn("script_model", self GetTagOrigin("tag_flamethrower_FX"));
|
self.flamethrower_fx = sys::spawn("script_model", self GetTagOrigin("tag_flamethrower_FX"));
|
||||||
self.flamethrower_fx setmodel("tag_origin");
|
self.flamethrower_fx setmodel("tag_origin");
|
||||||
self.flamethrower_fx.angles = self GetTagAngles("tag_flamethrower_FX");
|
self.flamethrower_fx.angles = self GetTagAngles("tag_flamethrower_FX");
|
||||||
self.flamethrower_fx linkto(self, "tag_flamethrower_FX");
|
self.flamethrower_fx sys::linkto(self, "tag_flamethrower_FX");
|
||||||
ft = self.flamethrower_fx;
|
ft = self.flamethrower_fx;
|
||||||
|
|
||||||
self waittill( "death" );
|
self waittill( "death" );
|
||||||
|
|
||||||
if ( isDefined( ft ) )
|
if ( isDefined( ft ) )
|
||||||
{
|
{
|
||||||
ft unlink();
|
ft sys::unlink();
|
||||||
ft delete();
|
ft delete();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -252,7 +252,7 @@ mechz_watch_for_flamethrower_damage()
|
|||||||
self thread mech_flamethrower_fx();
|
self thread mech_flamethrower_fx();
|
||||||
}
|
}
|
||||||
|
|
||||||
entity_on_tank_func = getFunction( "maps/mp/zm_tomb_tank", "entity_on_tank" );
|
entity_on_tank_func = pluto_sys::getfunction( "maps/mp/zm_tomb_tank", "entity_on_tank" );
|
||||||
|
|
||||||
while ( true )
|
while ( true )
|
||||||
{
|
{
|
||||||
@ -263,14 +263,14 @@ mechz_watch_for_flamethrower_damage()
|
|||||||
while ( isdefined( self.firing ) && self.firing )
|
while ( isdefined( self.firing ) && self.firing )
|
||||||
{
|
{
|
||||||
do_tank_sweep_auto_damage = isdefined( self.doing_tank_sweep ) && self.doing_tank_sweep && !level.vh_tank ent_flag( "tank_moving" );
|
do_tank_sweep_auto_damage = isdefined( self.doing_tank_sweep ) && self.doing_tank_sweep && !level.vh_tank ent_flag( "tank_moving" );
|
||||||
players = getplayers();
|
players = sys::getplayers();
|
||||||
|
|
||||||
for ( i = 0; i < players.size; i++ )
|
for ( i = 0; i < players.size; i++ )
|
||||||
{
|
{
|
||||||
if ( !( isdefined( players[i].is_burning ) && players[i].is_burning ) )
|
if ( !( isdefined( players[i].is_burning ) && players[i].is_burning ) )
|
||||||
{
|
{
|
||||||
if ( isDefined( entity_on_tank_func ) && do_tank_sweep_auto_damage && players[i] [[ entity_on_tank_func ]]()
|
if ( isDefined( entity_on_tank_func ) && do_tank_sweep_auto_damage && players[i] [[ entity_on_tank_func ]]()
|
||||||
|| isDefined( self.flamethrower_trigger ) && players[i] istouching( self.flamethrower_trigger ) || level.script != "zm_tomb" && players[ i ] hit_by_flamethrower( self ) )
|
|| isDefined( self.flamethrower_trigger ) && players[i] sys::istouching( self.flamethrower_trigger ) || level.script != "zm_tomb" && players[ i ] hit_by_flamethrower( self ) )
|
||||||
{
|
{
|
||||||
players[i] thread player_flame_damage();
|
players[i] thread player_flame_damage();
|
||||||
}
|
}
|
||||||
@ -288,7 +288,7 @@ mechz_watch_for_flamethrower_damage()
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( isDefined( entity_on_tank_func ) && do_tank_sweep_auto_damage && zombies[i] [[ entity_on_tank_func ]]()
|
if ( isDefined( entity_on_tank_func ) && do_tank_sweep_auto_damage && zombies[i] [[ entity_on_tank_func ]]()
|
||||||
|| isDefined( self.flamethrower_trigger ) && zombies[i] istouching( self.flamethrower_trigger ) || level.script != "zm_tomb" && zombies[ i ] hit_by_flamethrower( self ) )
|
|| isDefined( self.flamethrower_trigger ) && zombies[i] sys::istouching( self.flamethrower_trigger ) || level.script != "zm_tomb" && zombies[ i ] hit_by_flamethrower( self ) )
|
||||||
{
|
{
|
||||||
zombies[i].on_fire = 1;
|
zombies[i].on_fire = 1;
|
||||||
zombies[i] promote_to_explosive();
|
zombies[i] promote_to_explosive();
|
||||||
@ -398,7 +398,7 @@ zombie_burning_dmg()
|
|||||||
while ( true )
|
while ( true )
|
||||||
{
|
{
|
||||||
eyeorigin = self geteye();
|
eyeorigin = self geteye();
|
||||||
players = get_players();
|
players = sys::getplayers();
|
||||||
|
|
||||||
for ( i = 0; i < players.size; i++ )
|
for ( i = 0; i < players.size; i++ )
|
||||||
{
|
{
|
||||||
@ -406,7 +406,7 @@ zombie_burning_dmg()
|
|||||||
{
|
{
|
||||||
playereye = players[i] geteye();
|
playereye = players[i] geteye();
|
||||||
|
|
||||||
if ( distancesquared( eyeorigin, playereye ) < damageradius * damageradius )
|
if ( sys::distancesquared( eyeorigin, playereye ) < damageradius * damageradius )
|
||||||
{
|
{
|
||||||
players[i] dodamage( damage, self.origin, self );
|
players[i] dodamage( damage, self.origin, self );
|
||||||
players[i] notify( "burned" );
|
players[i] notify( "burned" );
|
||||||
@ -444,13 +444,13 @@ explode_on_death()
|
|||||||
if ( is_mature() )
|
if ( is_mature() )
|
||||||
{
|
{
|
||||||
if ( isdefined( level._effect["zomb_gib"] ) )
|
if ( isdefined( level._effect["zomb_gib"] ) )
|
||||||
playfx( level._effect["zomb_gib"], self gettagorigin( tag ) );
|
playfx( level._effect["zomb_gib"], self sys::gettagorigin( tag ) );
|
||||||
}
|
}
|
||||||
else if ( isdefined( level._effect["spawn_cloud"] ) )
|
else if ( isdefined( level._effect["spawn_cloud"] ) )
|
||||||
playfx( level._effect["spawn_cloud"], self gettagorigin( tag ) );
|
playfx( level._effect["spawn_cloud"], self sys::gettagorigin( tag ) );
|
||||||
|
|
||||||
self radiusdamage( self.origin, 128, 30, 15, undefined, "MOD_EXPLOSIVE" );
|
self radiusdamage( self.origin, 128, 30, 15, undefined, "MOD_EXPLOSIVE" );
|
||||||
self ghost();
|
self sys::ghost();
|
||||||
|
|
||||||
if ( isdefined( self.isdog ) && self.isdog )
|
if ( isdefined( self.isdog ) && self.isdog )
|
||||||
self hide();
|
self hide();
|
||||||
@ -505,7 +505,7 @@ should_do_flamethrower_attack()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( self.last_flamethrower_time ) && gettime() - self.last_flamethrower_time < level.mechz_flamethrower_cooldown_time )
|
if ( isdefined( self.last_flamethrower_time ) && sys::gettime() - self.last_flamethrower_time < level.mechz_flamethrower_cooldown_time )
|
||||||
{
|
{
|
||||||
/#
|
/#
|
||||||
if ( getdvarint( #"_id_E7121222" ) > 1 )
|
if ( getdvarint( #"_id_E7121222" ) > 1 )
|
||||||
@ -514,7 +514,7 @@ should_do_flamethrower_attack()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
n_dist_sq = distancesquared( self.origin, self.favoriteenemy.origin );
|
n_dist_sq = sys::distancesquared( self.origin, self.favoriteenemy.origin );
|
||||||
|
|
||||||
if ( n_dist_sq < 10000 || n_dist_sq > 50000 )
|
if ( n_dist_sq < 10000 || n_dist_sq > 50000 )
|
||||||
{
|
{
|
||||||
@ -551,20 +551,20 @@ mechz_do_flamethrower_attack( tank_sweep )
|
|||||||
#/
|
#/
|
||||||
self thread mechz_stop_basic_find_flesh();
|
self thread mechz_stop_basic_find_flesh();
|
||||||
self.ai_state = "flamethrower_attack";
|
self.ai_state = "flamethrower_attack";
|
||||||
self setgoalpos( self.origin );
|
self sys::setgoalpos( self.origin );
|
||||||
self clearanim( %root, 0.2 );
|
self clearanim( %root, 0.2 );
|
||||||
self.last_flamethrower_time = gettime();
|
self.last_flamethrower_time = sys::gettime();
|
||||||
self thread mechz_kill_flamethrower_watcher();
|
self thread mechz_kill_flamethrower_watcher();
|
||||||
|
|
||||||
if ( !isdefined( self.flamethrower_trigger ) && !isDefined( self.flamethrower_fx ) )
|
if ( !isdefined( self.flamethrower_trigger ) && !isDefined( self.flamethrower_fx ) )
|
||||||
self mechz_flamethrower_initial_setup();
|
self mechz_flamethrower_initial_setup();
|
||||||
|
|
||||||
n_nearby_enemies = 0;
|
n_nearby_enemies = 0;
|
||||||
a_players = getplayers();
|
a_players = sys::getplayers();
|
||||||
|
|
||||||
foreach ( player in a_players )
|
foreach ( player in a_players )
|
||||||
{
|
{
|
||||||
if ( distance2dsquared( player.origin, self.favoriteenemy.origin ) < 10000 )
|
if ( sys::distance2dsquared( player.origin, self.favoriteenemy.origin ) < 10000 )
|
||||||
n_nearby_enemies++;
|
n_nearby_enemies++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -576,17 +576,17 @@ mechz_do_flamethrower_attack( tank_sweep )
|
|||||||
else if ( randomint( 100 ) < level.mechz_ft_sweep_chance && n_nearby_enemies > 1 )
|
else if ( randomint( 100 ) < level.mechz_ft_sweep_chance && n_nearby_enemies > 1 )
|
||||||
{
|
{
|
||||||
self.doing_ft_sweep = 1;
|
self.doing_ft_sweep = 1;
|
||||||
self animscripted( self.origin, self.angles, "zm_flamethrower_sweep" );
|
self sys::animscripted( self.origin, self.angles, "zm_flamethrower_sweep" );
|
||||||
self maps\mp\animscripts\zm_shared::donotetracks( "flamethrower_anim" );
|
self maps\mp\animscripts\zm_shared::donotetracks( "flamethrower_anim" );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
self animscripted( self.origin, self.angles, "zm_flamethrower_aim_start" );
|
self sys::animscripted( self.origin, self.angles, "zm_flamethrower_aim_start" );
|
||||||
self thread mechz_flamethrower_aim();
|
self thread mechz_flamethrower_aim();
|
||||||
self maps\mp\animscripts\zm_shared::donotetracks( "flamethrower_anim" );
|
self maps\mp\animscripts\zm_shared::donotetracks( "flamethrower_anim" );
|
||||||
}
|
}
|
||||||
|
|
||||||
self orientmode( "face default" );
|
self sys::orientmode( "face default" );
|
||||||
|
|
||||||
if ( isdefined( self.doing_ft_sweep ) && self.doing_ft_sweep )
|
if ( isdefined( self.doing_ft_sweep ) && self.doing_ft_sweep )
|
||||||
self.doing_ft_sweep = 0;
|
self.doing_ft_sweep = 0;
|
||||||
|
@ -20,12 +20,12 @@ precache()
|
|||||||
precachemodel( "fx_axis_createfx" );
|
precachemodel( "fx_axis_createfx" );
|
||||||
include_weapon( "screecher_arms_zm", 0 );
|
include_weapon( "screecher_arms_zm", 0 );
|
||||||
precachestring( &"ZOMBIE_SCREECHER_ATTACH_FIRST" );
|
precachestring( &"ZOMBIE_SCREECHER_ATTACH_FIRST" );
|
||||||
level._effect["screecher_spawn_a"] = loadfx( "maps/zombie/fx_zmb_screech_hand_dirt_burst" );
|
level._effect["screecher_spawn_a"] = sys::loadfx( "maps/zombie/fx_zmb_screech_hand_dirt_burst" );
|
||||||
level._effect["screecher_spawn_b"] = loadfx( "maps/zombie/fx_zmb_screech_body_dirt_billowing" );
|
level._effect["screecher_spawn_b"] = sys::loadfx( "maps/zombie/fx_zmb_screech_body_dirt_billowing" );
|
||||||
level._effect["screecher_spawn_c"] = loadfx( "maps/zombie/fx_zmb_screech_body_dirt_falling" );
|
level._effect["screecher_spawn_c"] = sys::loadfx( "maps/zombie/fx_zmb_screech_body_dirt_falling" );
|
||||||
level._effect["screecher_hole"] = loadfx( "maps/zombie/fx_zmb_screecher_hole" );
|
level._effect["screecher_hole"] = sys::loadfx( "maps/zombie/fx_zmb_screecher_hole" );
|
||||||
level._effect["screecher_vortex"] = loadfx( "maps/zombie/fx_zmb_screecher_vortex" );
|
level._effect["screecher_vortex"] = sys::loadfx( "maps/zombie/fx_zmb_screecher_vortex" );
|
||||||
level._effect["screecher_death"] = loadfx( "maps/zombie/fx_zmb_screech_death_ash" );
|
level._effect["screecher_death"] = sys::loadfx( "maps/zombie/fx_zmb_screech_death_ash" );
|
||||||
}
|
}
|
||||||
|
|
||||||
register_clientfields()
|
register_clientfields()
|
||||||
@ -42,7 +42,7 @@ main()
|
|||||||
|
|
||||||
init()
|
init()
|
||||||
{
|
{
|
||||||
level.screecher_spawners = getentarray( "screecher_zombie_spawner", "script_noteworthy" );
|
level.screecher_spawners = sys::getentarray( "screecher_zombie_spawner", "script_noteworthy" );
|
||||||
array_thread( level.screecher_spawners, ::add_spawn_function, maps\mp\zombies\_zm_ai_screecher::screecher_prespawn );
|
array_thread( level.screecher_spawners, ::add_spawn_function, maps\mp\zombies\_zm_ai_screecher::screecher_prespawn );
|
||||||
level.zombie_ai_limit_screecher = 2;
|
level.zombie_ai_limit_screecher = 2;
|
||||||
level.zombie_screecher_count = 0;
|
level.zombie_screecher_count = 0;
|
||||||
@ -103,7 +103,7 @@ screecher_spawning_logic()
|
|||||||
|
|
||||||
while ( valid_players_in_screecher_zone <= 0 )
|
while ( valid_players_in_screecher_zone <= 0 )
|
||||||
{
|
{
|
||||||
players = getplayers();
|
players = sys::getplayers();
|
||||||
valid_players_in_screecher_zone = 0;
|
valid_players_in_screecher_zone = 0;
|
||||||
|
|
||||||
for ( p = 0; p < players.size; p++ )
|
for ( p = 0; p < players.size; p++ )
|
||||||
@ -148,14 +148,14 @@ screecher_spawning_logic()
|
|||||||
if ( isdefined( spawn_point ) )
|
if ( isdefined( spawn_point ) )
|
||||||
playsoundatposition( "zmb_vocals_screecher_spawn", spawn_point.origin );
|
playsoundatposition( "zmb_vocals_screecher_spawn", spawn_point.origin );
|
||||||
|
|
||||||
delay_time = gettime() + 5000;
|
delay_time = sys::gettime() + 5000;
|
||||||
now_zone = getent( "screecher_spawn_now", "targetname" );
|
now_zone = sys::getent( "screecher_spawn_now", "targetname" );
|
||||||
|
|
||||||
while ( gettime() < delay_time )
|
while ( sys::gettime() < delay_time )
|
||||||
{
|
{
|
||||||
in_zone = 0;
|
in_zone = 0;
|
||||||
|
|
||||||
if ( valid_players[0] istouching( now_zone ) )
|
if ( valid_players[0] sys::istouching( now_zone ) )
|
||||||
{
|
{
|
||||||
/#
|
/#
|
||||||
screecher_print( "in now zone" );
|
screecher_print( "in now zone" );
|
||||||
@ -258,7 +258,7 @@ player_in_screecher_zone( player )
|
|||||||
|
|
||||||
screecher_should_runaway( player )
|
screecher_should_runaway( player )
|
||||||
{
|
{
|
||||||
players = get_players();
|
players = sys::getplayers();
|
||||||
|
|
||||||
if ( players.size == 1 )
|
if ( players.size == 1 )
|
||||||
{
|
{
|
||||||
@ -281,7 +281,7 @@ screecher_should_runaway( player )
|
|||||||
screecher_get_closest_valid_player( origin, ignore_player )
|
screecher_get_closest_valid_player( origin, ignore_player )
|
||||||
{
|
{
|
||||||
valid_player_found = 0;
|
valid_player_found = 0;
|
||||||
players = get_players();
|
players = sys::getplayers();
|
||||||
|
|
||||||
if ( isdefined( level._zombie_using_humangun ) && level._zombie_using_humangun )
|
if ( isdefined( level._zombie_using_humangun ) && level._zombie_using_humangun )
|
||||||
players = arraycombine( players, level._zombie_human_array, 0, 0 );
|
players = arraycombine( players, level._zombie_human_array, 0, 0 );
|
||||||
@ -325,12 +325,12 @@ zombie_pathing_home()
|
|||||||
self endon( "death" );
|
self endon( "death" );
|
||||||
self endon( "zombie_acquire_enemy" );
|
self endon( "zombie_acquire_enemy" );
|
||||||
level endon( "intermission" );
|
level endon( "intermission" );
|
||||||
self setgoalpos( self.startinglocation );
|
self sys::setgoalpos( self.startinglocation );
|
||||||
self waittill( "goal" );
|
self waittill( "goal" );
|
||||||
playfx( level._effect["screecher_spawn_b"], self.origin, ( 0, 0, 1 ) );
|
playfx( level._effect["screecher_spawn_b"], self.origin, ( 0, 0, 1 ) );
|
||||||
self.no_powerups = 1;
|
self.no_powerups = 1;
|
||||||
self setfreecameralockonallowed( 0 );
|
self sys::setfreecameralockonallowed( 0 );
|
||||||
self animscripted( self.origin, self.angles, "zm_burrow" );
|
self sys::animscripted( self.origin, self.angles, "zm_burrow" );
|
||||||
self playsound( "zmb_screecher_dig" );
|
self playsound( "zmb_screecher_dig" );
|
||||||
maps\mp\animscripts\zm_shared::donotetracks( "burrow_anim" );
|
maps\mp\animscripts\zm_shared::donotetracks( "burrow_anim" );
|
||||||
self delete();
|
self delete();
|
||||||
@ -361,9 +361,9 @@ screecher_find_flesh()
|
|||||||
else
|
else
|
||||||
self thread screecher_runaway();
|
self thread screecher_runaway();
|
||||||
|
|
||||||
self.zombie_path_timer = gettime() + randomfloatrange( 1, 3 ) * 1000;
|
self.zombie_path_timer = sys::gettime() + randomfloatrange( 1, 3 ) * 1000;
|
||||||
|
|
||||||
while ( gettime() < self.zombie_path_timer )
|
while ( sys::gettime() < self.zombie_path_timer )
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
|
|
||||||
self notify( "path_timer_done" );
|
self notify( "path_timer_done" );
|
||||||
@ -408,12 +408,12 @@ screecher_prespawn()
|
|||||||
self.zombie_init_done = 1;
|
self.zombie_init_done = 1;
|
||||||
self notify( "zombie_init_done" );
|
self notify( "zombie_init_done" );
|
||||||
self.allowpain = 0;
|
self.allowpain = 0;
|
||||||
self animmode( "normal" );
|
self sys::animmode( "normal" );
|
||||||
self orientmode( "face enemy" );
|
self sys::orientmode( "face enemy" );
|
||||||
self.forcemovementscriptstate = 0;
|
self.forcemovementscriptstate = 0;
|
||||||
self maps\mp\zombies\_zm_spawner::zombie_setup_attack_properties();
|
self maps\mp\zombies\_zm_spawner::zombie_setup_attack_properties();
|
||||||
self maps\mp\zombies\_zm_spawner::zombie_complete_emerging_into_playable_area();
|
self maps\mp\zombies\_zm_spawner::zombie_complete_emerging_into_playable_area();
|
||||||
self setfreecameralockonallowed( 0 );
|
self sys::setfreecameralockonallowed( 0 );
|
||||||
self.startinglocation = self.origin;
|
self.startinglocation = self.origin;
|
||||||
self playsound( "zmb_vocals_screecher_spawn" );
|
self playsound( "zmb_vocals_screecher_spawn" );
|
||||||
self thread play_screecher_fx();
|
self thread play_screecher_fx();
|
||||||
@ -421,7 +421,7 @@ screecher_prespawn()
|
|||||||
self thread screecher_rise();
|
self thread screecher_rise();
|
||||||
self thread screecher_cleanup();
|
self thread screecher_cleanup();
|
||||||
self thread screecher_distance_tracking();
|
self thread screecher_distance_tracking();
|
||||||
self.anchor = spawn( "script_origin", self.origin );
|
self.anchor = sys::spawn( "script_origin", self.origin );
|
||||||
self.attack_time = 0;
|
self.attack_time = 0;
|
||||||
self.attack_delay = 1000;
|
self.attack_delay = 1000;
|
||||||
self.attack_delay_base = 1000;
|
self.attack_delay_base = 1000;
|
||||||
@ -469,8 +469,8 @@ play_screecher_breathing_audio()
|
|||||||
|
|
||||||
if ( !isdefined( self.loopsoundent ) )
|
if ( !isdefined( self.loopsoundent ) )
|
||||||
{
|
{
|
||||||
self.loopsoundent = spawn( "script_origin", self.origin );
|
self.loopsoundent = sys::spawn( "script_origin", self.origin );
|
||||||
self.loopsoundent linkto( self, "tag_origin" );
|
self.loopsoundent sys::linkto( self, "tag_origin" );
|
||||||
}
|
}
|
||||||
|
|
||||||
self.loopsoundent playloopsound( "zmb_vocals_screecher_breath" );
|
self.loopsoundent playloopsound( "zmb_vocals_screecher_breath" );
|
||||||
@ -479,10 +479,10 @@ play_screecher_breathing_audio()
|
|||||||
screecher_rise()
|
screecher_rise()
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon( "death" );
|
||||||
self animscripted( self.origin, self.angles, "zm_rise" );
|
self sys::animscripted( self.origin, self.angles, "zm_rise" );
|
||||||
maps\mp\animscripts\zm_shared::donotetracks( "rise_anim" );
|
maps\mp\animscripts\zm_shared::donotetracks( "rise_anim" );
|
||||||
self notify( "risen" );
|
self notify( "risen" );
|
||||||
self setfreecameralockonallowed( 1 );
|
self sys::setfreecameralockonallowed( 1 );
|
||||||
self.startinglocation = self.origin;
|
self.startinglocation = self.origin;
|
||||||
self thread screecher_zombie_think();
|
self thread screecher_zombie_think();
|
||||||
self thread play_screecher_breathing_audio();
|
self thread play_screecher_breathing_audio();
|
||||||
@ -499,7 +499,7 @@ screecher_zombie_think()
|
|||||||
height_tolerance = 32;
|
height_tolerance = 32;
|
||||||
self.state = "chase_init";
|
self.state = "chase_init";
|
||||||
self.isattacking = 0;
|
self.isattacking = 0;
|
||||||
self.nextspecial = gettime();
|
self.nextspecial = sys::gettime();
|
||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
@ -532,7 +532,7 @@ screecher_chase_update()
|
|||||||
|
|
||||||
if ( isdefined( player ) )
|
if ( isdefined( player ) )
|
||||||
{
|
{
|
||||||
dist = distance2dsquared( self.origin, player.origin );
|
dist = sys::distance2dsquared( self.origin, player.origin );
|
||||||
|
|
||||||
if ( dist < 57600 )
|
if ( dist < 57600 )
|
||||||
{
|
{
|
||||||
@ -560,7 +560,7 @@ screecher_attack()
|
|||||||
|
|
||||||
self notify( "stop_find_flesh" );
|
self notify( "stop_find_flesh" );
|
||||||
self notify( "zombie_acquire_enemy" );
|
self notify( "zombie_acquire_enemy" );
|
||||||
self animmode( "nogravity" );
|
self sys::animmode( "nogravity" );
|
||||||
self playsound( "zmb_vocals_screecher_jump" );
|
self playsound( "zmb_vocals_screecher_jump" );
|
||||||
|
|
||||||
if ( isdefined( self.loopsoundent ) )
|
if ( isdefined( self.loopsoundent ) )
|
||||||
@ -569,19 +569,19 @@ screecher_attack()
|
|||||||
self.loopsoundent = undefined;
|
self.loopsoundent = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
self setanimstatefromasd( "zm_jump_up" );
|
self sys::setanimstatefromasd( "zm_jump_up" );
|
||||||
maps\mp\animscripts\zm_shared::donotetracks( "jump_up_anim" );
|
maps\mp\animscripts\zm_shared::donotetracks( "jump_up_anim" );
|
||||||
asd_state = self screecher_fly_to_player( player );
|
asd_state = self screecher_fly_to_player( player );
|
||||||
self setplayercollision( 0 );
|
self setplayercollision( 0 );
|
||||||
self setclientfield( "render_third_person", 1 );
|
self setclientfield( "render_third_person", 1 );
|
||||||
self linkto( self.favoriteenemy, "tag_origin" );
|
self sys::linkto( self.favoriteenemy, "tag_origin" );
|
||||||
self animscripted( self.favoriteenemy.origin, self.favoriteenemy.angles, asd_state );
|
self sys::animscripted( self.favoriteenemy.origin, self.favoriteenemy.angles, asd_state );
|
||||||
maps\mp\animscripts\zm_shared::donotetracks( "jump_land_success_anim" );
|
maps\mp\animscripts\zm_shared::donotetracks( "jump_land_success_anim" );
|
||||||
org = self.favoriteenemy gettagorigin( "j_head" );
|
org = self.favoriteenemy sys::gettagorigin( "j_head" );
|
||||||
angles = self.favoriteenemy gettagangles( "j_head" );
|
angles = self.favoriteenemy sys::gettagangles( "j_head" );
|
||||||
self forceteleport( org, angles );
|
self forceteleport( org, angles );
|
||||||
self linkto( self.favoriteenemy, "j_head" );
|
self sys::linkto( self.favoriteenemy, "j_head" );
|
||||||
self animscripted( self.origin, self.angles, "zm_headpull" );
|
self sys::animscripted( self.origin, self.angles, "zm_headpull" );
|
||||||
self.linked_ent = self.favoriteenemy;
|
self.linked_ent = self.favoriteenemy;
|
||||||
self.linked_ent setmovespeedscale( 0.5 );
|
self.linked_ent setmovespeedscale( 0.5 );
|
||||||
self thread screecher_melee_button_watcher();
|
self thread screecher_melee_button_watcher();
|
||||||
@ -591,22 +591,22 @@ screecher_attack()
|
|||||||
screecher_fly_to_player( player )
|
screecher_fly_to_player( player )
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon( "death" );
|
||||||
self setanimstatefromasd( "zm_jump_loop" );
|
self sys::setanimstatefromasd( "zm_jump_loop" );
|
||||||
self.anchor.origin = self.origin;
|
self.anchor.origin = self.origin;
|
||||||
self.anchor.angles = self.angles;
|
self.anchor.angles = self.angles;
|
||||||
self linkto( self.anchor );
|
self sys::linkto( self.anchor );
|
||||||
anim_id_back = self getanimfromasd( "zm_jump_land_success_fromback", 0 );
|
anim_id_back = self getanimfromasd( "zm_jump_land_success_fromback", 0 );
|
||||||
anim_id_front = self getanimfromasd( "zm_jump_land_success_fromfront", 0 );
|
anim_id_front = self getanimfromasd( "zm_jump_land_success_fromfront", 0 );
|
||||||
end_time = gettime() + 2500;
|
end_time = sys::gettime() + 2500;
|
||||||
dist = undefined;
|
dist = undefined;
|
||||||
dist_update = undefined;
|
dist_update = undefined;
|
||||||
|
|
||||||
while ( end_time > gettime() )
|
while ( end_time > sys::gettime() )
|
||||||
{
|
{
|
||||||
goal_pos_back = getstartorigin( player.origin, player.angles, anim_id_back );
|
goal_pos_back = getstartorigin( player.origin, player.angles, anim_id_back );
|
||||||
goal_pos_front = getstartorigin( player.origin, player.angles, anim_id_front );
|
goal_pos_front = getstartorigin( player.origin, player.angles, anim_id_front );
|
||||||
dist_back = distancesquared( self.anchor.origin, goal_pos_back );
|
dist_back = sys::distancesquared( self.anchor.origin, goal_pos_back );
|
||||||
dist_front = distancesquared( self.anchor.origin, goal_pos_front );
|
dist_front = sys::distancesquared( self.anchor.origin, goal_pos_front );
|
||||||
goal_pos = goal_pos_back;
|
goal_pos = goal_pos_back;
|
||||||
goal_ang = getstartangles( player.origin, player.angles, anim_id_back );
|
goal_ang = getstartangles( player.origin, player.angles, anim_id_back );
|
||||||
asd_state = "zm_jump_land_success_fromback";
|
asd_state = "zm_jump_land_success_fromback";
|
||||||
@ -637,7 +637,7 @@ screecher_fly_to_player( player )
|
|||||||
}
|
}
|
||||||
|
|
||||||
self.anchor.angles = facing_angles;
|
self.anchor.angles = facing_angles;
|
||||||
unit_facing_vec = vectornormalize( facing_vec );
|
unit_facing_vec = sys::vectornormalize( facing_vec );
|
||||||
new_pos = self.anchor.origin + vectorscale( unit_facing_vec, dist_update );
|
new_pos = self.anchor.origin + vectorscale( unit_facing_vec, dist_update );
|
||||||
self.anchor moveto( new_pos, 0.1 );
|
self.anchor moveto( new_pos, 0.1 );
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
@ -699,7 +699,7 @@ screecher_start_attack()
|
|||||||
}
|
}
|
||||||
|
|
||||||
self.state = "attacking";
|
self.state = "attacking";
|
||||||
self.attack_time = gettime();
|
self.attack_time = sys::gettime();
|
||||||
|
|
||||||
if ( !getdvarint( #"scr_screecher_poison" ) )
|
if ( !getdvarint( #"scr_screecher_poison" ) )
|
||||||
player startpoisoning();
|
player startpoisoning();
|
||||||
@ -761,22 +761,22 @@ screecher_attacking()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self.attack_time < gettime() )
|
if ( self.attack_time < sys::gettime() )
|
||||||
{
|
{
|
||||||
scratch_score = 5;
|
scratch_score = 5;
|
||||||
players = get_players();
|
players = sys::getplayers();
|
||||||
self.screecher_score = self.screecher_score + scratch_score;
|
self.screecher_score = self.screecher_score + scratch_score;
|
||||||
killed_player = self screecher_check_score();
|
killed_player = self screecher_check_score();
|
||||||
|
|
||||||
if ( player.health > 0 && !( isdefined( killed_player ) && killed_player ) )
|
if ( player.health > 0 && !( isdefined( killed_player ) && killed_player ) )
|
||||||
{
|
{
|
||||||
self.attack_delay = self.attack_delay_base + randomint( self.attack_delay_offset );
|
self.attack_delay = self.attack_delay_base + randomint( self.attack_delay_offset );
|
||||||
self.attack_time = gettime() + self.attack_delay;
|
self.attack_time = sys::gettime() + self.attack_delay;
|
||||||
self thread claw_fx( player, self.attack_delay * 0.001 );
|
self thread claw_fx( player, self.attack_delay * 0.001 );
|
||||||
self playsound( "zmb_vocals_screecher_attack" );
|
self playsound( "zmb_vocals_screecher_attack" );
|
||||||
player playsoundtoplayer( "zmb_screecher_scratch", player );
|
player playsoundtoplayer( "zmb_screecher_scratch", player );
|
||||||
player thread do_player_general_vox( "general", "screecher_attack" );
|
player thread do_player_general_vox( "general", "screecher_attack" );
|
||||||
players = get_players();
|
players = sys::getplayers();
|
||||||
|
|
||||||
if ( players.size == 1 )
|
if ( players.size == 1 )
|
||||||
{
|
{
|
||||||
@ -803,12 +803,12 @@ screecher_runaway()
|
|||||||
self notify( "runaway" );
|
self notify( "runaway" );
|
||||||
self.state = "runaway";
|
self.state = "runaway";
|
||||||
self.ignoreall = 1;
|
self.ignoreall = 1;
|
||||||
self setgoalpos( self.startinglocation );
|
self sys::setgoalpos( self.startinglocation );
|
||||||
self waittill( "goal" );
|
self waittill( "goal" );
|
||||||
playfx( level._effect["screecher_spawn_b"], self.origin, ( 0, 0, 1 ) );
|
playfx( level._effect["screecher_spawn_b"], self.origin, ( 0, 0, 1 ) );
|
||||||
self.no_powerups = 1;
|
self.no_powerups = 1;
|
||||||
self setfreecameralockonallowed( 0 );
|
self sys::setfreecameralockonallowed( 0 );
|
||||||
self animscripted( self.origin, self.angles, "zm_burrow" );
|
self sys::animscripted( self.origin, self.angles, "zm_burrow" );
|
||||||
self playsound( "zmb_screecher_dig" );
|
self playsound( "zmb_screecher_dig" );
|
||||||
maps\mp\animscripts\zm_shared::donotetracks( "burrow_anim" );
|
maps\mp\animscripts\zm_shared::donotetracks( "burrow_anim" );
|
||||||
self delete();
|
self delete();
|
||||||
@ -858,7 +858,7 @@ screecher_detach( player )
|
|||||||
player.screecher_weapon = undefined;
|
player.screecher_weapon = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
self unlink();
|
self sys::unlink();
|
||||||
self setclientfield( "render_third_person", 0 );
|
self setclientfield( "render_third_person", 0 );
|
||||||
|
|
||||||
if ( isdefined( self.linked_ent ) )
|
if ( isdefined( self.linked_ent ) )
|
||||||
@ -869,10 +869,10 @@ screecher_detach( player )
|
|||||||
}
|
}
|
||||||
|
|
||||||
self.green_light = player.green_light;
|
self.green_light = player.green_light;
|
||||||
self animcustom( ::screecher_jump_down );
|
self sys::animcustom( ::screecher_jump_down );
|
||||||
self waittill( "jump_down_done" );
|
self waittill( "jump_down_done" );
|
||||||
maps\mp\_visionset_mgr::vsmgr_deactivate( "overlay", "zm_ai_screecher_blur", player );
|
maps\mp\_visionset_mgr::vsmgr_deactivate( "overlay", "zm_ai_screecher_blur", player );
|
||||||
self animmode( "normal" );
|
self sys::animmode( "normal" );
|
||||||
self.ignoreall = 1;
|
self.ignoreall = 1;
|
||||||
self setplayercollision( 1 );
|
self setplayercollision( 1 );
|
||||||
|
|
||||||
@ -893,7 +893,7 @@ screecher_detach( player )
|
|||||||
screecher_jump_down()
|
screecher_jump_down()
|
||||||
{
|
{
|
||||||
self endon( "death" );
|
self endon( "death" );
|
||||||
self setanimstatefromasd( "zm_headpull_success" );
|
self sys::setanimstatefromasd( "zm_headpull_success" );
|
||||||
wait 0.6;
|
wait 0.6;
|
||||||
self notify( "jump_down_done" );
|
self notify( "jump_down_done" );
|
||||||
}
|
}
|
||||||
@ -1009,14 +1009,14 @@ screecher_distance_tracking()
|
|||||||
while ( true )
|
while ( true )
|
||||||
{
|
{
|
||||||
can_delete = 1;
|
can_delete = 1;
|
||||||
players = get_players();
|
players = sys::getplayers();
|
||||||
|
|
||||||
foreach ( player in players )
|
foreach ( player in players )
|
||||||
{
|
{
|
||||||
if ( player.sessionstate == "spectator" )
|
if ( player.sessionstate == "spectator" )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
dist_sq = distancesquared( self.origin, player.origin );
|
dist_sq = sys::distancesquared( self.origin, player.origin );
|
||||||
|
|
||||||
if ( dist_sq >= 4000000 )
|
if ( dist_sq >= 4000000 )
|
||||||
continue;
|
continue;
|
||||||
@ -1137,9 +1137,9 @@ screecher_damage_func( einflictor, eattacker, idamage, idflags, smeansofdeath, s
|
|||||||
|
|
||||||
screecher_death_func()
|
screecher_death_func()
|
||||||
{
|
{
|
||||||
self unlink();
|
self sys::unlink();
|
||||||
self.noragdoll = 1;
|
self.noragdoll = 1;
|
||||||
self setanimstatefromasd( "zm_death" );
|
self sys::setanimstatefromasd( "zm_death" );
|
||||||
maps\mp\animscripts\zm_shared::donotetracks( "death_anim" );
|
maps\mp\animscripts\zm_shared::donotetracks( "death_anim" );
|
||||||
playfx( level._effect["screecher_death"], self.origin );
|
playfx( level._effect["screecher_death"], self.origin );
|
||||||
|
|
||||||
@ -1209,7 +1209,7 @@ screecher_debug_axis()
|
|||||||
|
|
||||||
if ( !isdefined( player.bone_fxaxis ) )
|
if ( !isdefined( player.bone_fxaxis ) )
|
||||||
{
|
{
|
||||||
player.bone_fxaxis = spawn( "script_model", org );
|
player.bone_fxaxis = sys::spawn( "script_model", org );
|
||||||
player.bone_fxaxis setmodel( "fx_axis_createfx" );
|
player.bone_fxaxis setmodel( "fx_axis_createfx" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
297
zm_ai_pack/pluto_sys.gsc
Normal file
297
zm_ai_pack/pluto_sys.gsc
Normal file
@ -0,0 +1,297 @@
|
|||||||
|
// Plutonium T6 Exclusive Builtins
|
||||||
|
|
||||||
|
/@
|
||||||
|
[DESCRIPTION]: Returns a function pointer based on <path> and <func_name>;
|
||||||
|
Does not trigger compilation or resolving of the script, therefore if the script isn't referenced by an include or far call at least once it will fail
|
||||||
|
to find the function and return undefined.;
|
||||||
|
[CALL_TYPE]: function;
|
||||||
|
[USAGE]: func = getfunction( <path>, <func_name> );
|
||||||
|
[PARAMS]: ARG1:<string> ARG2:<string>;
|
||||||
|
[PARAMS_NOTES]: Path must use forward slashes to denote the path;
|
||||||
|
[RETURNS]: <function_pointer> or <undefined>;
|
||||||
|
@/
|
||||||
|
getfunction( path, func_name )
|
||||||
|
{
|
||||||
|
return getfunction( path, func_name );
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
[DESCRIPTION]: Used inside a function with a hook applied to it by replacefunc. When called resumes execution of the original function starting at the top.
|
||||||
|
Unlike removedetour the hook is reenabled automatically when the function exits.;
|
||||||
|
[CALL_TYPE]: function;
|
||||||
|
[USAGE]: disabledetouronce();
|
||||||
|
[PARAMS]: NONE;
|
||||||
|
[PARAMS_NOTES]: NONE;
|
||||||
|
[RETURNS]: NONE;
|
||||||
|
[ERRORS]: 1. Must be called inside a function that had a hook applied to it by replacefunc.;
|
||||||
|
@/
|
||||||
|
disabledetouronce()
|
||||||
|
{
|
||||||
|
disabledetouronce();
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
[DESCRIPTION]: Takes in <func> and returns the function pointer it was detoured to or returns undefined if <func> was not hooked
|
||||||
|
at the time of calling getdetour.;
|
||||||
|
[CALL_TYPE]: function;
|
||||||
|
[USAGE]: getdetour( <func> );
|
||||||
|
[PARAMS]: ARG1:<function_pointer>;
|
||||||
|
[PARAMS_NOTES]: NONE;
|
||||||
|
[RETURNS]: <function_pointer> or <undefined>;
|
||||||
|
@/
|
||||||
|
getdetour( func )
|
||||||
|
{
|
||||||
|
return getdetour( func );
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
[DESCRIPTION]: Returns an array of pathnodes based on the caller node's path links. Returns an empty array if no links exist for caller node;
|
||||||
|
[CALL_TYPE]: method;
|
||||||
|
[USAGE]: self getlinkednodes();
|
||||||
|
[PARAMS]: ARG0:<node>;
|
||||||
|
[PARAMS_NOTES]: NONE;
|
||||||
|
[RETURNS]: <array>;
|
||||||
|
@/
|
||||||
|
getlinkednodes()
|
||||||
|
{
|
||||||
|
return self getlinkednodes();
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
[DESCRIPTION]: Sends a personal chat message to caller player. Applies ^7 and sv_sayName dvar's value to start of message unless sv_sayName dvar's value is blank
|
||||||
|
in which case the message is not modified before being sent to the client.;
|
||||||
|
[CALL_TYPE]: method;
|
||||||
|
[USAGE]: self tell( <message> );
|
||||||
|
[PARAMS]: ARG0:<entity> ARG1:<string>;
|
||||||
|
[PARAMS_NOTES]: NONE;
|
||||||
|
[RETURNS]: NONE;
|
||||||
|
@/
|
||||||
|
tell( message )
|
||||||
|
{
|
||||||
|
self tell( message );
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
[DESCRIPTION]: Sends a chat message to all players. Applies ^7 and sv_sayName dvar's value to start of message unless sv_sayName dvar's value is blank
|
||||||
|
in which case the message is not modified before being sent to the client.;
|
||||||
|
[CALL_TYPE]: method;
|
||||||
|
[USAGE]: self tell( <message> );
|
||||||
|
[PARAMS]: ARG1:<string>;
|
||||||
|
[PARAMS_NOTES]: NONE;
|
||||||
|
[RETURNS]: NONE;
|
||||||
|
@/
|
||||||
|
say( message )
|
||||||
|
{
|
||||||
|
say( message );
|
||||||
|
}
|
||||||
|
|
||||||
|
// The following are bot specifc builtins
|
||||||
|
/@
|
||||||
|
[BOT_BUTTON_TYPES]:
|
||||||
|
{
|
||||||
|
"attack",
|
||||||
|
"sprint",
|
||||||
|
"melee",
|
||||||
|
"activate",
|
||||||
|
"reload",
|
||||||
|
"usereload",
|
||||||
|
"gostand",
|
||||||
|
"frag",
|
||||||
|
"smoke",
|
||||||
|
"holdbreath",
|
||||||
|
"crouch",
|
||||||
|
"prone",
|
||||||
|
"leanleft",
|
||||||
|
"leanright",
|
||||||
|
"vehicleboost",
|
||||||
|
"stance",
|
||||||
|
"switchseat",
|
||||||
|
"throwback",
|
||||||
|
"throw",
|
||||||
|
"handbrake",
|
||||||
|
"reverse",
|
||||||
|
"jam",
|
||||||
|
"vehiclemovedown",
|
||||||
|
"vehiclemoveup",
|
||||||
|
"vehicleattacksecond",
|
||||||
|
"vehicleattack",
|
||||||
|
"ads",
|
||||||
|
"actionslot 1",
|
||||||
|
"actionslot 2",
|
||||||
|
"actionslot 3",
|
||||||
|
"actionslot 4"
|
||||||
|
};
|
||||||
|
[BOT_BUTTON_VALUES]:
|
||||||
|
{
|
||||||
|
"enable",
|
||||||
|
"disable"
|
||||||
|
};
|
||||||
|
@/
|
||||||
|
|
||||||
|
/@
|
||||||
|
[DESCRIPTION]: Allows bot to melee lunge at entity with <ent_num> and <dist> to control the lunge distance when bot activates melee.
|
||||||
|
<dist> is hard capped to values between 0 and 255.;
|
||||||
|
[CALL_TYPE]: method;
|
||||||
|
[USAGE]: self botmeleeparams( <ent_num>, <dist> );
|
||||||
|
[PARAMS]: ARG0:<entity> ARG1:<int> ARG2:<float>;
|
||||||
|
[PARAMS_NOTES]: NONE;
|
||||||
|
[RETURNS]: NONE;
|
||||||
|
@/
|
||||||
|
botmeleeparams( ent_num, dist )
|
||||||
|
{
|
||||||
|
self botmeleeparams( ent_num, dist );
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
[DESCRIPTION]: Toggles off melee lunging for bot and clears the current dist and ent_num set by botmeleeparams.;
|
||||||
|
[CALL_TYPE]: method;
|
||||||
|
[USAGE]: self botclearmeleeparams();
|
||||||
|
[PARAMS]: ARG0:<entity>;
|
||||||
|
[PARAMS_NOTES]: NONE;
|
||||||
|
[RETURNS]: NONE;
|
||||||
|
@/
|
||||||
|
botclearmeleeparams()
|
||||||
|
{
|
||||||
|
self botclearmeleeparams();
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
[DESCRIPTION]: Overrides caller bot's forward and right movement until botclearmoveoverride is called on caller bot. Values are between -127 for fully backwards and left, and fully 128 for forwards and right.
|
||||||
|
Bot effectively simulates analog movement where max absolute values mean maximum speed and 0 no movement in that direction at all.;
|
||||||
|
[CALL_TYPE]: method;
|
||||||
|
[USAGE]: self botmovementoverride( <forward>, <right> );
|
||||||
|
[PARAMS]: ARG0:<entity> ARG1:<int> ARG2:<int>;
|
||||||
|
[PARAMS_NOTES]: NONE;
|
||||||
|
[RETURNS]: NONE;
|
||||||
|
@/
|
||||||
|
botmovementoverride( forward, right )
|
||||||
|
{
|
||||||
|
self botmovementoverride( forward, right );
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
[DESCRIPTION]: Toggles off a movement override and resets forward and right values for caller bot.;
|
||||||
|
[CALL_TYPE]: method;
|
||||||
|
[USAGE]: self botclearmovementoverride();
|
||||||
|
[PARAMS]: ARG0:<entity>;
|
||||||
|
[PARAMS_NOTES]: NONE;
|
||||||
|
[RETURNS]: NONE;
|
||||||
|
@/
|
||||||
|
botclearmovementoverride()
|
||||||
|
{
|
||||||
|
self botclearmovementoverride();
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
[DESCRIPTION]: Causes caller bot to press and hold <button> if <toggle> is "enable",
|
||||||
|
otherwise if <toggle> is "disable" will not be able to use <button> automatically.;
|
||||||
|
[CALL_TYPE]: method;
|
||||||
|
[USAGE]: self botbuttonoverride( <button>, <toggle> );
|
||||||
|
[PARAMS]: ARG0:<entity> ARG1:<string> ARG2:<string>;
|
||||||
|
[PARAMS_NOTES]: <button> must be one of [BOT_BUTTON_TYPES] and toggle must be one of [BOT_BUTTON_VALUES];
|
||||||
|
[RETURNS]: NONE;
|
||||||
|
@/
|
||||||
|
botbuttonoverride( button, toggle )
|
||||||
|
{
|
||||||
|
self botbuttonoverride( button, toggle );
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
[DESCRIPTION]: Toggles off a button override for caller bot.;
|
||||||
|
[CALL_TYPE]: method;
|
||||||
|
[USAGE]: self botclearbuttonoverride();
|
||||||
|
[PARAMS]: ARG0:<entity>;
|
||||||
|
[PARAMS_NOTES]: NONE;
|
||||||
|
[RETURNS]: NONE;
|
||||||
|
@/
|
||||||
|
botclearbuttonoverride( button )
|
||||||
|
{
|
||||||
|
self botclearbuttonoverride( button );
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
[DESCRIPTION]: If [toggle] is truthy all bot overrides set by the other Plutonium bot builtins will be cleared.
|
||||||
|
Otherwise if [toggle] is falsy or not specified all bot overrides will be enabled and all buttons disabled.;
|
||||||
|
[CALL_TYPE]: method;
|
||||||
|
[USAGE]: self botclearoverrides();
|
||||||
|
[PARAMS]: ARG0:<entity> ARG1:[int];
|
||||||
|
[PARAMS_NOTES]: NONE;
|
||||||
|
[RETURNS]: NONE;
|
||||||
|
@/
|
||||||
|
botclearoverrides( toggle )
|
||||||
|
{
|
||||||
|
if ( !isDefined( toggle ) )
|
||||||
|
{
|
||||||
|
self botclearoverrides();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
self botclearoverrides( toggle );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
[DESCRIPTION]: Forces caller bot to use <weapon> from their inventory until botclearweaponoverride is called on caller bot.;
|
||||||
|
[CALL_TYPE]: method;
|
||||||
|
[USAGE]: self botweaponoverride( <weapon> );
|
||||||
|
[PARAMS]: ARG0:<entity> ARG1:<string>;
|
||||||
|
[PARAMS_NOTES]: NONE;
|
||||||
|
[RETURNS]: NONE;
|
||||||
|
@/
|
||||||
|
botweaponoverride( weapon )
|
||||||
|
{
|
||||||
|
self botweaponoverride( weapon );
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
[DESCRIPTION]: Toggles off the weapon override applied by botweaponoverride;
|
||||||
|
[CALL_TYPE]: method;
|
||||||
|
[USAGE]: self botclearweaponoverride();
|
||||||
|
[PARAMS]: ARG0:<entity>;
|
||||||
|
[PARAMS_NOTES]: NONE;
|
||||||
|
[RETURNS]: NONE;
|
||||||
|
@/
|
||||||
|
botclearweaponoverride()
|
||||||
|
{
|
||||||
|
self botclearweaponoverride();
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
[DESCRIPTION]: Clears all button overrides applied to caller bot.;
|
||||||
|
[CALL_TYPE]: method;
|
||||||
|
[USAGE]: self botclearbuttonoverrides();
|
||||||
|
[PARAMS]: ARG0:<entity>;
|
||||||
|
[PARAMS_NOTES]: NONE;
|
||||||
|
[RETURNS]: NONE;
|
||||||
|
@/
|
||||||
|
botclearbuttonoverrides()
|
||||||
|
{
|
||||||
|
self botclearbuttonoverrides();
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
[DESCRIPTION]: Toggles off caller bot's ability to automatically aim until botclearaimoverride is called on caller bot.
|
||||||
|
This allows for setplayerangles to used on caller bot to control their aiming.;
|
||||||
|
[CALL_TYPE]: method;
|
||||||
|
[USAGE]: self botclearbuttonoverrides();
|
||||||
|
[PARAMS]: ARG0:<entity>;
|
||||||
|
[PARAMS_NOTES]: NONE;
|
||||||
|
[RETURNS]: NONE;
|
||||||
|
@/
|
||||||
|
botaimoverride()
|
||||||
|
{
|
||||||
|
self botaimoverride();
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
[DESCRIPTION]: Clears the aim override applied by botaimoverride for caller bot.;
|
||||||
|
[CALL_TYPE]: method;
|
||||||
|
[USAGE]: self botclearaimoverride();
|
||||||
|
[PARAMS]: ARG0:<entity>;
|
||||||
|
[PARAMS_NOTES]: NONE;
|
||||||
|
[RETURNS]: NONE;
|
||||||
|
@/
|
||||||
|
botclearaimoverride()
|
||||||
|
{
|
||||||
|
self botclearaimoverride();
|
||||||
|
}
|
@ -125,17 +125,17 @@ init()
|
|||||||
level.player_out_of_playable_area_monitor = false;
|
level.player_out_of_playable_area_monitor = false;
|
||||||
flag_wait( "initial_blackscreen_passed" );
|
flag_wait( "initial_blackscreen_passed" );
|
||||||
|
|
||||||
//brutus_spawners = getEntArray( "brutus_zombie_spawner", "script_noteworthy" );
|
//brutus_spawners = sys::getentarray( "brutus_zombie_spawner", "script_noteworthy" );
|
||||||
//giant_robot0_spawners = getEntArray( "ai_giant_robot_0", "targetname" );
|
//giant_robot0_spawners = sys::getentarray( "ai_giant_robot_0", "targetname" );
|
||||||
//giant_robot1_spawners = getEntArray( "ai_giant_robot_1", "targetname" );
|
//giant_robot1_spawners = sys::getentarray( "ai_giant_robot_1", "targetname" );
|
||||||
//giant_robot2_spawners = getEntArray( "ai_giant_robot_2", "targetname" );
|
//giant_robot2_spawners = sys::getentarray( "ai_giant_robot_2", "targetname" );
|
||||||
//leaper_spawners = getEntArray( "leaper_zombie_spawner", "script_noteworthy" );
|
//leaper_spawners = sys::getentarray( "leaper_zombie_spawner", "script_noteworthy" );
|
||||||
//mechz_spawners = getEntArray( "mechz_spawner", "script_noteworthy" );
|
//mechz_spawners = sys::getentarray( "mechz_spawner", "script_noteworthy" );
|
||||||
//zombie_dog_spawners = getEntArray( "zombie_dog_spawner", "script_noteworthy" );
|
//zombie_dog_spawners = sys::getentarray( "zombie_dog_spawner", "script_noteworthy" );
|
||||||
//avogadro_spawners = getEntArray( "avogadro_zombie_spawner", "script_noteworthy" );
|
//avogadro_spawners = sys::getentarray( "avogadro_zombie_spawner", "script_noteworthy" );
|
||||||
//screecher_spawners = getEntArray( "screecher_zombie_spawner", "script_noteworthy" );
|
//screecher_spawners = sys::getentarray( "screecher_zombie_spawner", "script_noteworthy" );
|
||||||
//ghost_spawners = getEntArray( "ghost_zombie_spawner", "script_noteworthy" );
|
//ghost_spawners = sys::getentarray( "ghost_zombie_spawner", "script_noteworthy" );
|
||||||
//sloth_spawners = getEntArray( "sloth_zombie_spawner", "script_noteworthy" );
|
//sloth_spawners = sys::getentarray( "sloth_zombie_spawner", "script_noteworthy" );
|
||||||
|
|
||||||
origin = level.players[ 0 ].origin;
|
origin = level.players[ 0 ].origin;
|
||||||
|
|
||||||
|
@ -466,7 +466,7 @@ print_ent_field( message, field )
|
|||||||
|
|
||||||
print_entities()
|
print_entities()
|
||||||
{
|
{
|
||||||
ents = getEntArray();
|
ents = sys::getentarray();
|
||||||
|
|
||||||
print( "******SERVER ENTITIES******" );
|
print( "******SERVER ENTITIES******" );
|
||||||
print( "Listing " + ents.size + " entities" );
|
print( "Listing " + ents.size + " entities" );
|
||||||
|
@ -25,31 +25,31 @@ main()
|
|||||||
level.gametype = toLower( getDvar( "g_gametype" ) );
|
level.gametype = toLower( getDvar( "g_gametype" ) );
|
||||||
|
|
||||||
level.ai_data = [];
|
level.ai_data = [];
|
||||||
// level.ai_data[ "avogadro" ] = spawnStruct();
|
// level.ai_data[ "avogadro" ] = sys::spawnstruct();
|
||||||
// level.ai_data[ "avogadro" ].main = maps\mp\zombies\_zm_ai_avogadro::main;
|
// level.ai_data[ "avogadro" ].main = maps\mp\zombies\_zm_ai_avogadro::main;
|
||||||
// level.ai_data[ "avogadro" ].init = maps\mp\zombies\_zm_ai_avogadro::init;
|
// level.ai_data[ "avogadro" ].init = maps\mp\zombies\_zm_ai_avogadro::init;
|
||||||
// level.ai_data[ "avogadro" ].should_execute = !( level.script == "zm_transit" && level.gametype == "zclassic" );
|
// level.ai_data[ "avogadro" ].should_execute = !( level.script == "zm_transit" && level.gametype == "zclassic" );
|
||||||
// level.ai_data[ "screecher" ] = spawnStruct();
|
// level.ai_data[ "screecher" ] = sys::spawnstruct();
|
||||||
// level.ai_data[ "screecher" ].main = maps\mp\zombies\_zm_ai_screecher::main;
|
// level.ai_data[ "screecher" ].main = maps\mp\zombies\_zm_ai_screecher::main;
|
||||||
// level.ai_data[ "screecher" ].init = maps\mp\zombies\_zm_ai_screecher::init;
|
// level.ai_data[ "screecher" ].init = maps\mp\zombies\_zm_ai_screecher::init;
|
||||||
// level.ai_data[ "screecher" ].should_execute = !( level.script == "zm_transit" && level.gametype == "zclassic" );
|
// level.ai_data[ "screecher" ].should_execute = !( level.script == "zm_transit" && level.gametype == "zclassic" );
|
||||||
// level.ai_data[ "ghost" ] = spawnStruct();
|
// level.ai_data[ "ghost" ] = sys::spawnstruct();
|
||||||
// level.ai_data[ "ghost" ].main = maps\mp\zombies\_zm_ai_ghost::main;
|
// level.ai_data[ "ghost" ].main = maps\mp\zombies\_zm_ai_ghost::main;
|
||||||
// level.ai_data[ "ghost" ].should_execute = !( level.script == "zm_buried" && level.gametype == "zclassic" );
|
// level.ai_data[ "ghost" ].should_execute = !( level.script == "zm_buried" && level.gametype == "zclassic" );
|
||||||
// level.ai_data[ "leaper" ] = spawnStruct();
|
// level.ai_data[ "leaper" ] = sys::spawnstruct();
|
||||||
// level.ai_data[ "leaper" ].main = maps\mp\zombies\_zm_ai_leaper::main;
|
// level.ai_data[ "leaper" ].main = maps\mp\zombies\_zm_ai_leaper::main;
|
||||||
// level.ai_data[ "leaper" ].should_execute = level.script != "zm_highrise";
|
// level.ai_data[ "leaper" ].should_execute = level.script != "zm_highrise";
|
||||||
level.ai_data[ "brutus" ] = spawnStruct();
|
level.ai_data[ "brutus" ] = sys::spawnstruct();
|
||||||
level.ai_data[ "brutus" ].main = maps\mp\zombies\_zm_ai_brutus::main;
|
level.ai_data[ "brutus" ].main = maps\mp\zombies\_zm_ai_brutus::main;
|
||||||
level.ai_data[ "brutus" ].should_execute = level.script != "zm_prison";
|
level.ai_data[ "brutus" ].should_execute = level.script != "zm_prison";
|
||||||
level.ai_data[ "mechz" ] = spawnStruct();
|
level.ai_data[ "mechz" ] = sys::spawnstruct();
|
||||||
level.ai_data[ "mechz" ].main = maps\mp\zombies\_zm_ai_mechz::main;
|
level.ai_data[ "mechz" ].main = maps\mp\zombies\_zm_ai_mechz::main;
|
||||||
level.ai_data[ "mechz" ].init = maps\mp\zombies\_zm_ai_mechz::init;
|
level.ai_data[ "mechz" ].init = maps\mp\zombies\_zm_ai_mechz::init;
|
||||||
level.ai_data[ "mechz" ].should_execute = level.script != "zm_tomb";
|
level.ai_data[ "mechz" ].should_execute = level.script != "zm_tomb";
|
||||||
level.ai_data[ "zombie_dog" ] = spawnStruct();
|
//level.ai_data[ "zombie_dog" ] = sys::spawnstruct();
|
||||||
level.ai_data[ "zombie_dog" ].main = maps\mp\zombies\_zm_ai_dogs::init;
|
//level.ai_data[ "zombie_dog" ].main = maps\mp\zombies\_zm_ai_dogs::init;
|
||||||
level.ai_data[ "zombie_dog" ].init = maps\mp\zombies\_zm_ai_dogs::enable_dog_rounds;
|
//level.ai_data[ "zombie_dog" ].init = maps\mp\zombies\_zm_ai_dogs::enable_dog_rounds;
|
||||||
level.ai_data[ "zombie_dog" ].should_execute = !( level.gametype == "zstandard" && getGametypeSetting( "allowDogs" ) == 1 );
|
//level.ai_data[ "zombie_dog" ].should_execute = !( level.gametype == "zstandard" && getGametypeSetting( "allowDogs" ) == 1 );
|
||||||
|
|
||||||
keys = getArrayKeys( level.ai_data );
|
keys = getArrayKeys( level.ai_data );
|
||||||
for ( i = 0; i < keys.size; i++ )
|
for ( i = 0; i < keys.size; i++ )
|
||||||
@ -193,9 +193,9 @@ dotraverse_teleport( no_powerups )
|
|||||||
self.is_traversing = true;
|
self.is_traversing = true;
|
||||||
self stop_basic_find_flesh();
|
self stop_basic_find_flesh();
|
||||||
self.ai_state = "idle";
|
self.ai_state = "idle";
|
||||||
//self setanimstatefromasd( "zm_idle" );
|
//self sys::setanimstatefromasd( "zm_idle" );
|
||||||
self animmode( "noclip" );
|
self sys::animmode( "noclip" );
|
||||||
self orientmode( "face angle", startnode.angles[1] );
|
self sys::orientmode( "face angle", startnode.angles[1] );
|
||||||
self.origin = original_origin + ( forward * i );
|
self.origin = original_origin + ( forward * i );
|
||||||
self setGoalPos( self.origin );
|
self setGoalPos( self.origin );
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
@ -207,8 +207,7 @@ dotraverse_teleport( no_powerups )
|
|||||||
|
|
||||||
self.origin = endnode.origin;
|
self.origin = endnode.origin;
|
||||||
|
|
||||||
print( "Ending custom traverse" );
|
self sys::animmode( "none" );
|
||||||
self animmode( "none" );
|
|
||||||
self.is_traversing = false;
|
self.is_traversing = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -234,13 +233,13 @@ dotraverse_override( traversestate, traversealias, no_powerups )
|
|||||||
self notify( "zombie_start_traverse" );
|
self notify( "zombie_start_traverse" );
|
||||||
self.traversestartnode = self getnegotiationstartnode();
|
self.traversestartnode = self getnegotiationstartnode();
|
||||||
assert( isdefined( self.traversestartnode ) );
|
assert( isdefined( self.traversestartnode ) );
|
||||||
self orientmode( "face angle", self.traversestartnode.angles[1] );
|
self sys::orientmode( "face angle", self.traversestartnode.angles[1] );
|
||||||
self.traversestartz = self.origin[2];
|
self.traversestartz = self.origin[2];
|
||||||
|
|
||||||
if ( isdefined( self.pre_traverse ) )
|
if ( isdefined( self.pre_traverse ) )
|
||||||
self [[ self.pre_traverse ]]();
|
self [[ self.pre_traverse ]]();
|
||||||
|
|
||||||
self setanimstatefromasd( traversestate, traversealias );
|
self sys::setanimstatefromasd( traversestate, traversealias );
|
||||||
self maps\mp\animscripts\zm_shared::donotetracks( "traverse_anim" );
|
self maps\mp\animscripts\zm_shared::donotetracks( "traverse_anim" );
|
||||||
self traversemode( "gravity" );
|
self traversemode( "gravity" );
|
||||||
self.a.nodeath = 0;
|
self.a.nodeath = 0;
|
||||||
@ -314,7 +313,7 @@ get_idle_anim()
|
|||||||
|
|
||||||
replace_single_function( path, func_name, func_override )
|
replace_single_function( path, func_name, func_override )
|
||||||
{
|
{
|
||||||
func = getFunction( path, func_name );
|
func = pluto_sys::getfunction( path, func_name );
|
||||||
|
|
||||||
if ( isDefined( func ) )
|
if ( isDefined( func ) )
|
||||||
{
|
{
|
||||||
@ -349,7 +348,7 @@ can_be_paralyzed_override( zombie )
|
|||||||
|
|
||||||
watch_crash_trigger_override()
|
watch_crash_trigger_override()
|
||||||
{
|
{
|
||||||
sloth_set_state_func = getFunction( "maps/mp/zombies/_zm_ai_sloth", "sloth_set_state" );
|
sloth_set_state_func = pluto_sys::getfunction( "maps/mp/zombies/_zm_ai_sloth", "sloth_set_state" );
|
||||||
while ( true )
|
while ( true )
|
||||||
{
|
{
|
||||||
self waittill( "trigger", who );
|
self waittill( "trigger", who );
|
||||||
|
@ -29,7 +29,7 @@ killzombiesinpowerstation_override()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( distancesquared( ( 11344, 7590, -729 ), zombie.origin ) < radiussq )
|
if ( sys::distancesquared( ( 11344, 7590, -729 ), zombie.origin ) < radiussq )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( isdefined( zombie ) && zombie maps\mp\zombies\_zm_zonemgr::entity_in_zone( "zone_prr", 1 ) || isdefined( zombie.zone_name ) && zombie.zone_name == "zone_prr" )
|
if ( isdefined( zombie ) && zombie maps\mp\zombies\_zm_zonemgr::entity_in_zone( "zone_prr", 1 ) || isdefined( zombie.zone_name ) && zombie.zone_name == "zone_prr" )
|
||||||
|
@ -1,14 +1,440 @@
|
|||||||
// T6 Script Builtins
|
// T6 Script Builtins
|
||||||
/@
|
/@
|
||||||
Adds <fx_name> as a configstring to the fx configstring pool.
|
[DESCRIPTION]: Adds <fx_name> as a configstring to the fx configstring pool.
|
||||||
Returns an index that can be used in many different functions and methods to play an fx.
|
Returns an index that can be used in many different functions and methods to play an fx.
|
||||||
The fx configstring pool is limited to 195 entries before fx configstring overflow occurs.
|
The fx configstring pool is limited to 195 entries before fx configstring overflow occurs.
|
||||||
On Plutonium addonfx pool was added to bypass this limit so functions add to this configstring pool
|
On Plutonium addonfx pool was added to bypass this limit so functions that add to this configstring pool
|
||||||
have another 256 entries.
|
have another 256 entries past the normal limit.;
|
||||||
USAGE: level._effect[ effect_alias ] = loadfx( <fx_name> );
|
[CALL_TYPE]: function;
|
||||||
PARAMS: <string>
|
[USAGE]: level._effect[ <effect_alias> ] = loadfx( <fx_name> );
|
||||||
|
[PARAMS]: ARG1:<string>;
|
||||||
|
[RETURNS]: <undefined>;
|
||||||
|
[ERRORS]: 1. Will script error if called after the first frame of script execution.;
|
||||||
@/
|
@/
|
||||||
loadfx( fx_name )
|
loadfx( fx_name )
|
||||||
{
|
{
|
||||||
loadfx( fx_name );
|
loadfx( fx_name );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
[DESCRIPTION]: Used on actor type entities.
|
||||||
|
Unknown, does nothing in engine.;
|
||||||
|
[CALL_TYPE]: method;
|
||||||
|
[RETURNS]: NONE;
|
||||||
|
@/
|
||||||
|
setengagementmindist( a, b )
|
||||||
|
{
|
||||||
|
self setengagementmindist( a, b );
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
[DESCRIPTION]: Used on actor type entities.
|
||||||
|
Unknown, does nothing in engine.;
|
||||||
|
[CALL_TYPE]: method;
|
||||||
|
[RETURNS]: NONE;
|
||||||
|
@/
|
||||||
|
setengagementmaxdist( a, b )
|
||||||
|
{
|
||||||
|
self setengagementmaxdist( a, b );
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
[DESCRIPTION]: Used on actor type entities.
|
||||||
|
Unknown, sets bits on the s.lerp.u.actor.aiType variable in the engine.
|
||||||
|
However, these bits are never accessed afterwards.;
|
||||||
|
[CALL_TYPE]: method;
|
||||||
|
[RETURNS]: NONE;
|
||||||
|
@/
|
||||||
|
setcharacterindex( index )
|
||||||
|
{
|
||||||
|
self setcharacterindex( index );
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
[DESCRIPTION]: Used on actor spawner type entities.
|
||||||
|
Sets the team on the actor so it can be used by getspawnerteamarray().
|
||||||
|
This is its only purpose.;
|
||||||
|
[CALL_TYPE]: method;
|
||||||
|
[USAGE]: <actor_spawner> setspawnerteam( <team_str> );
|
||||||
|
[PARAMS]: ENT:<actor_spawner> ARG1:<string>;
|
||||||
|
[RETURNS]: NONE;
|
||||||
|
[ERRORS]: 1. Must be called on an actor spawner type entity.;
|
||||||
|
@/
|
||||||
|
setspawnerteam( team )
|
||||||
|
{
|
||||||
|
self setspawnerteam( team );
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
[DESCRIPTION]: Adds an animstatedef file to be parsed by the engine at a later time.
|
||||||
|
Required for T6 actors to play anims properly.
|
||||||
|
Should only be called in an aitype script's precache() function.;
|
||||||
|
[CALL_TYPE]: function;
|
||||||
|
[USAGE]: precacheanimstatedef( <ai_index>, <animtree>, <anim_state_def_name> );
|
||||||
|
[PARAMS]: ARG1:<int> ARG2:<animtree> ARG3:<string>;
|
||||||
|
[RETURNS]: NONE;
|
||||||
|
@/
|
||||||
|
precacheanimstatedef( ai_index, animtree, anim_state_def_name )
|
||||||
|
{
|
||||||
|
precacheanimstatedef( ai_index, animtree, anim_state_def_name );
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
[DESCRIPTION]: Adds <shellshock_name> as a configstring to the shellshock configstring pool.
|
||||||
|
Must be called before playing a shellshock on a player entity.
|
||||||
|
The shellshock configstring pool is limited to 16 entries.;
|
||||||
|
[CALL_TYPE]: function;
|
||||||
|
[USAGE]: precacheshellshock( <shellshock_name> );
|
||||||
|
[PARAMS]: ARG1:<string>;
|
||||||
|
[RETURNS]: NONE;
|
||||||
|
[ERRORS]: 1. Will script error if called after the first frame of script execution.
|
||||||
|
2. Will com error if called on a shellshock that does not exist and the default shellshock is missing.;
|
||||||
|
@/
|
||||||
|
precacheshellshock( shellshock_name )
|
||||||
|
{
|
||||||
|
precacheshellshock( shellshock_name );
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
[DESCRIPTION]: Returns an array of entities on the map which could include temp entities, script spawned entities and permanent entities spawned by the engine.
|
||||||
|
If no args are specified returns an array of every entity on the map.
|
||||||
|
If <name> and <type> is specified then returns an array of entities whose fields match those args.
|
||||||
|
Possible values for <type> are limited to the following:
|
||||||
|
classname, target, targetname, script_noteworthy.;
|
||||||
|
[CALL_TYPE]: function;
|
||||||
|
[USAGE]: ents = getentarray( <name>, <type> );
|
||||||
|
[PARAMS]: ARG1:[string] ARG2:[string];
|
||||||
|
[PARAMS_NOTES]: If at least one arg is specified execution will expect at most and least one more arg.;
|
||||||
|
[RETURNS]: <number_indexed_array>;
|
||||||
|
@/
|
||||||
|
getentarray( name, type )
|
||||||
|
{
|
||||||
|
if ( isDefined( name ) )
|
||||||
|
{
|
||||||
|
if ( isDefined( type ) )
|
||||||
|
{
|
||||||
|
return getentarray( name, type );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
assertMsg( "Scr_GetEntArray expects either no args to get all entities or two args to get entities with <name> and <type>" );
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return getentarray();
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
[DESCRIPTION]: Creates a script struct and returns which can then be used like an entity for things like fields and function calls.
|
||||||
|
Allocates to the parent variables which is limited to 32768 maximum structs/arrays/threads.
|
||||||
|
[CALL_TYPE]: function;
|
||||||
|
[USAGE]: struct = spawnstruct();
|
||||||
|
[PARAMS]: NONE;
|
||||||
|
[RETURNS]: <struct>;
|
||||||
|
@/
|
||||||
|
spawnstruct()
|
||||||
|
{
|
||||||
|
return spawnstruct();
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
|
||||||
|
@/
|
||||||
|
animmode( mode, clear_path )
|
||||||
|
{
|
||||||
|
if ( !isDefined( clear_path ) )
|
||||||
|
{
|
||||||
|
self animmode( mode );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
self animmode( mode, clear_path );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
|
||||||
|
@/
|
||||||
|
orientmode( mode, special )
|
||||||
|
{
|
||||||
|
if ( !isDefined( special ) )
|
||||||
|
{
|
||||||
|
self orientmode( mode );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
self orientmode( mode, special );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
|
||||||
|
@/
|
||||||
|
setfreecameralockonallowed( enabled )
|
||||||
|
{
|
||||||
|
self setfreecameralockonallowed( enabled );
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
|
||||||
|
@/
|
||||||
|
spawn( classname, origin, spawnflags, spawnvar1, spawnvar2, spawnvar3 )
|
||||||
|
{
|
||||||
|
if ( !isDefined( spawnflags ) )
|
||||||
|
{
|
||||||
|
return spawn( classname, origin );
|
||||||
|
}
|
||||||
|
else if ( !isDefined( spawnvar1 ) )
|
||||||
|
{
|
||||||
|
return spawn( classname, origin, spawnflags );
|
||||||
|
}
|
||||||
|
else if ( !isDefined( spawnvar2 ) )
|
||||||
|
{
|
||||||
|
return spawn( classname, origin, spawnflags, spawnvar1 );
|
||||||
|
}
|
||||||
|
else if ( !isDefined( spawnvar3 ) )
|
||||||
|
{
|
||||||
|
return spawn( classname, origin, spawnflags, spawnvar1, spawnvar2 );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return spawn( classname, origin, spawnflags, spawnvar1, spawnvar2, spawnvar3 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
|
||||||
|
@/
|
||||||
|
linkto( parent, tag_name, origin_offset, angles_offset )
|
||||||
|
{
|
||||||
|
if ( !isDefined( tag_name ) )
|
||||||
|
{
|
||||||
|
self linkto( parent );
|
||||||
|
}
|
||||||
|
else if ( !isDefined( origin_offset ) )
|
||||||
|
{
|
||||||
|
self linkto( parent, tag_name );
|
||||||
|
}
|
||||||
|
else if ( !isDefined( angles_offset ) )
|
||||||
|
{
|
||||||
|
self linkto( parent, tag_name, origin_offset );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
self linkto( parent, tag_name, origin_offset, angles_offset );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
|
||||||
|
@/
|
||||||
|
gettime()
|
||||||
|
{
|
||||||
|
return gettime();
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
|
||||||
|
@/
|
||||||
|
getent( name, type )
|
||||||
|
{
|
||||||
|
return getent( name, type );
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
|
||||||
|
@/
|
||||||
|
setanimstatefromasd( animstate, substate_value )
|
||||||
|
{
|
||||||
|
if ( !isDefined( substate_value ) )
|
||||||
|
{
|
||||||
|
self setanimstatefromasd( animstate );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
self setanimstatefromasd( animstate, substate_value );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
|
||||||
|
@/
|
||||||
|
istouching( other, extra_boundary )
|
||||||
|
{
|
||||||
|
if ( !isDefined( extra_boundary ) )
|
||||||
|
{
|
||||||
|
return self istouching( other );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return self istouching( other, extra_boundary );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
|
||||||
|
@/
|
||||||
|
getnode( name, type )
|
||||||
|
{
|
||||||
|
return getnode( name, type );
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
|
||||||
|
@/
|
||||||
|
ghost()
|
||||||
|
{
|
||||||
|
self ghost();
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
|
||||||
|
@/
|
||||||
|
notsolid()
|
||||||
|
{
|
||||||
|
self notsolid();
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
|
||||||
|
@/
|
||||||
|
show()
|
||||||
|
{
|
||||||
|
self show();
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
|
||||||
|
@/
|
||||||
|
solid()
|
||||||
|
{
|
||||||
|
self solid();
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
|
||||||
|
@/
|
||||||
|
unlink()
|
||||||
|
{
|
||||||
|
self unlink();
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
|
||||||
|
@/
|
||||||
|
getplayers( team )
|
||||||
|
{
|
||||||
|
if ( !isDefined( team ) )
|
||||||
|
{
|
||||||
|
return getplayers();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return getplayers( team );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
|
||||||
|
@/
|
||||||
|
vectornormalize( vector )
|
||||||
|
{
|
||||||
|
return vectornormalize( vector );
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
|
||||||
|
@/
|
||||||
|
vectordot( a, b )
|
||||||
|
{
|
||||||
|
return vectordot( a, b );
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
|
||||||
|
@/
|
||||||
|
distancesquared( a, b )
|
||||||
|
{
|
||||||
|
return distancesquared( a, b );
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
|
||||||
|
@/
|
||||||
|
distance2dsquared( a, b )
|
||||||
|
{
|
||||||
|
return distance2dsquared( a, b );
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
|
||||||
|
@/
|
||||||
|
gettagorigin( tag_name )
|
||||||
|
{
|
||||||
|
return self gettagorigin( tag_name );
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
|
||||||
|
@/
|
||||||
|
gettagangles( tag_name )
|
||||||
|
{
|
||||||
|
return self gettagangles( tag_name );
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
|
||||||
|
@/
|
||||||
|
setgoalpos( origin, angles )
|
||||||
|
{
|
||||||
|
if ( !isDefined( angles ) )
|
||||||
|
{
|
||||||
|
self setgoalpos( origin );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
self setgoalpos( origin, angles );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
|
||||||
|
@/
|
||||||
|
getspeedmph()
|
||||||
|
{
|
||||||
|
return self getspeedmph();
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
|
||||||
|
@/
|
||||||
|
animcustom( func, end_func )
|
||||||
|
{
|
||||||
|
if ( !isDefined( end_func ) )
|
||||||
|
{
|
||||||
|
return self animcustom( func );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return self animcustom( func, end_func );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/@
|
||||||
|
|
||||||
|
@/
|
||||||
|
animscripted( origin, angles, statename, substate_value, mode )
|
||||||
|
{
|
||||||
|
if ( !isDefined( substate_value ) )
|
||||||
|
{
|
||||||
|
self animscripted( origin, angles, statename );
|
||||||
|
}
|
||||||
|
else if ( !isDefined( mode ) )
|
||||||
|
{
|
||||||
|
self animscripted( origin, angles, statename, substate_value );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
self animscripted( origin, angles, statename, substate_value, mode );
|
||||||
|
}
|
||||||
|
}
|
@ -7,3 +7,7 @@ crossbow and paped variant
|
|||||||
spas shotgun from SP
|
spas shotgun from SP
|
||||||
every wonder weapon on every map
|
every wonder weapon on every map
|
||||||
faster sprint anims for zombies (supersprint and chase_bus)
|
faster sprint anims for zombies (supersprint and chase_bus)
|
||||||
|
all the good ai types from BO2 and possibly BO1/BO3
|
||||||
|
elemental variants of certain special enemies at higher rounds(electric panzer, flaming dogs, acid warden, aura)
|
||||||
|
aats
|
||||||
|
chicky-chicky comes in random variants 1. random projectiles in 360 radius, airstrike where bullet lands, turret shooter, friendly ai shooter
|
Loading…
x
Reference in New Issue
Block a user